【python】numpy库数组拼接快捷方式horizontal&vertical、np.c_、np.column_stack等官方文档详解与实例
2018-01-26 12:02
956 查看
上一篇用到了np.concatenante方法处理数组拼接问题,这个方法在pandas库同样有pd.concat的方法对应,因而选择上述方法会比较熟悉且常用,详见上一篇博客:【python】numpy库数组拼接np.concatenate官方文档详解与实例。
对于数组处理的方法还是有很多,下面进一步详解其他方式,方便在实操过程中有更多的选择。
1、np.vstack & np.hstack
np.vstack(tup)等价于np.concatenate(tup, axis=0)操作,vertical就是垂直方向上操作的意思
np.vstack(tup)实例:
np.hstack(tup)等价于np.concatenate(tup, axis=0)操作,horizontal就是水平方向上操作的意思
np.hstack(tup)实例
2、np.column_stack& np.row_stack
np.column_stack 官方文档
np.column_stack(tup)相当于np.concatenate((a1, a2, …), axis=1),对竖轴的数组进行横向的操作,即操作对象是column轴实例:
np.row_stack等价于np.vstack
3、np.c_ & np.r_
np.c_ & np.r_是 np.column_stack& np.row_stack 的缩写
np.c_ & np.r_的语法与np.column_stack& np.row_stack有区别,np.c_ & np.r_是直接对数组进行操作,而np.column_stack& np.row_stack是对数组的元组或者列表操作。
np.c_ & np.r_实例:
总结:
np.concatenate(tup, axis=0)需要传递数组的元组或者列表、以及指定轴向。
np.vstack(tup) 和 np.hstack(tup)只需传入数组的元组即可,轴向在函数定义时已经确定,v即vertical垂直方向上,horizontal即水平方向。
np.row_stack(tup) 和 np.column_stack(tup)同样只需传入数组的元组即可,轴向同样在函数定义时已经确定,row_stack即对row的维度数据进行垂直方向的操作,column_stack对column的维度数据进行水平方向的操作。
axis = 0 与 row_stack 中的row等价,row维度就是0轴,同理column维度就是1轴,所以这两个定义是指被操做的维度数据,而不是拼接方向;而vertical或者horizontal直接指定拼接方向。
对于数组处理的方法还是有很多,下面进一步详解其他方式,方便在实操过程中有更多的选择。
1、np.vstack & np.hstack
np.vstack(tup)等价于np.concatenate(tup, axis=0)操作,vertical就是垂直方向上操作的意思
vstack(tup) #给对象传入元组 Parameters #多个数组的元组 ---------- tup : sequence of ndarrays Tuple containing arrays to be stacked. The arrays must have the same shape along all but the first axis. Returns #拼接好的多维数组 ------- stacked : ndarray The array formed by stacking the given arrays. Notes #等价于np.concatenate(tup, axis=0)操作 ----- Equivalent to ``np.concatenate(tup, axis=0)`` if `tup` contains arrays that are at least 2-dimensional.
np.vstack(tup)实例:
In [4]: a = np.array([1, 2, 3]) ...: b = np.array([2, 3, 4]) ...: np.vstack((a,b)) ...: Out[4]: array([[1, 2, 3], [2, 3, 4]]) In [5]: a = np.array([[1], [2], [3]]) ...: b = np.array([[2], [3], [4]]) ...: np.vstack((a,b)) ...: Out[5]: array([[1], [2], [3], [2], [3], [4]])
np.hstack(tup)等价于np.concatenate(tup, axis=0)操作,horizontal就是水平方向上操作的意思
help(np.hsplit) #进行查看详细功能
np.hstack(tup)实例
In [6]: a = np.array([[1], [2], [3]]) ...: b = np.array([[2], [3], [4]]) ...: np.hstack((a,b)) ...: ...: Out[6]: array([[1, 2], [2, 3], [3, 4]]) In [7]: a = np.array([1, 2, 3]) ...: b = np.array([2, 3, 4]) ...: np.hstack((a,b)) ...: ...: Out[7]: array([1, 2, 3, 2, 3, 4])
2、np.column_stack& np.row_stack
np.column_stack 官方文档
column_stack(tup) #如果传递的是一个一维数组,则会先将一维数组转化为2维数组,然后进一步进行拼接操作 Stack 1-D arrays as columns into a 2-D array. Parameters ---------- tup : sequence of 1-D or 2-D arrays. Arrays to stack. All of them must have the same first dimension. Returns ------- stacked : 2-D array The array formed by stacking the given arrays.
np.column_stack(tup)相当于np.concatenate((a1, a2, …), axis=1),对竖轴的数组进行横向的操作,即操作对象是column轴实例:
#如果开始传入的是一维数组,首先将一维数组转化为2维数组 In [13]: a = np.array((1,2,3)) ...: b = np.array((2,3,4)) ...: np.column_stack((a,b)) ...: Out[13]: array([[1, 2], [2, 3], [3, 4]]) #如果开始传入的是多维数组,则直接进行拼接操作 In [15]: a = np.array(((1,2,3),(4,3,2))) ...: b = np.array(((2,3,4),(2,12,2))) ...: np.column_stack((a,b)) ...: ...: Out[15]: array([[ 1, 2, 3, 2, 3, 4], [ 4, 3, 2, 2, 12, 2]])
np.row_stack等价于np.vstack
3、np.c_ & np.r_
np.c_ & np.r_是 np.column_stack& np.row_stack 的缩写
np.c_ & np.r_的语法与np.column_stack& np.row_stack有区别,np.c_ & np.r_是直接对数组进行操作,而np.column_stack& np.row_stack是对数组的元组或者列表操作。
np.c_ & np.r_实例:
# np.c_ 与np.column_stack 是一个意思,对数组的column列的数据进行横向操作 In [24]: a = np.array([1, 2, 3]) In [25]: b = np.array([2, 3, 4]) In [26]: np.c_[a,b] Out[26]: array([[1, 2], [2, 3], [3, 4]]) # np.r_ 与np.row_stack 不完全等价,因为操作对象不一样 In [31]: a = np.array((1,2,3)) ...: b = np.array((2,3,4)) ...: c = np.row_stack((a,b)) ...: d = np.r_[a,b] ...: In [32]: c Out[32]: array([[1, 2, 3], [2, 3, 4]]) In [33]: d Out[33]: array([1, 2, 3, 2, 3, 4])
总结:
np.concatenate(tup, axis=0)需要传递数组的元组或者列表、以及指定轴向。
np.vstack(tup) 和 np.hstack(tup)只需传入数组的元组即可,轴向在函数定义时已经确定,v即vertical垂直方向上,horizontal即水平方向。
np.row_stack(tup) 和 np.column_stack(tup)同样只需传入数组的元组即可,轴向同样在函数定义时已经确定,row_stack即对row的维度数据进行垂直方向的操作,column_stack对column的维度数据进行水平方向的操作。
axis = 0 与 row_stack 中的row等价,row维度就是0轴,同理column维度就是1轴,所以这两个定义是指被操做的维度数据,而不是拼接方向;而vertical或者horizontal直接指定拼接方向。
相关文章推荐
- Python函数可变参数定义及其参数传递方式实例详解
- 用"XML解析开发包Jaxp"XML文档进行SAX方式解析实例--封装XML为bean实例
- php引用(&)详解及注意事项 摘自:PHP引用(&)使用详解 官方文档: 1.引用是什么:http://www.php.net/manual/zh/language.references.
- Python函数可变参数定义及其参数传递方式实例详解
- JS常用的几种数组遍历方式以及性能分析对比实例详解
- Oracle 10g 单实例数据库Data Guard 之 Logical Standby 配置详解(根据官方文档总结)
- Python之68个内置函数详解【翻译自python3.6官方文档】
- python-66:BS4实例--下载BS4官方文档
- Oracle 10g 单实例数据库 Data Guard 之 Physical Standby 配置详解(根据官方文档总结)
- Python3.2官方文档翻译--作用域和命名空间实例
- AndroidStudio快捷方式总结(官方文档版)
- Python3.2官方文档翻译--实例对象和方法对象
- Python3.2官方文档翻译--实例对象和方法对象
- Python3.2官方文档翻译--作用域和命名空间实例
- [转]asp.net 部署数据库、开始菜单、桌面快捷方式实例
- WINCE快捷方式详解
- WINCE快捷方式详解
- WINCE快捷方式详解
- 读帮助文档发现Delphi2009的新特性,象C语言一样用数组方式使用指针.
- [编程实例]vbs脚本删除桌面上的快捷方式腾讯QQ