堆叠数组
从深度看,数组既可以横向叠放,也可以竖向叠放
首先建立某些数组
In [19]: a = np.arange(9).reshape(3,3)
In [20]: a
Out[20]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [21]: b = a * 2
In [22]: b
Out[22]:
array([[ 0, 2, 4],
[ 6, 8, 10],
[12, 14, 16]])
-
水平叠加(hstack)
-
首先用元祖确定数组的形状,然后由hstack()函数处理数组
In [26]: np.hstack((a,b)) Out[26]: array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]])
-
使用concatenate()也能达到同样的效果
In [27]: np.concatenate((a,b), axis=1) Out[27]: array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]])
-
-
垂直叠加(vstack)
-
首先用元祖确定数组的形状,然后由vstack()函数处理数组
In [28]: np.vstack((a,b)) Out[28]: array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]])
-
当axis值为0时,concatenate()函数也能达到同样的效果.实际上,这是该函数的缺省值
In [29]: np.concatenate((a,b), axis=0) Out[29]: array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]])
-
-
深度叠加(dtsack)
这要用到dtsack()函数和一个元祖.这种方法是沿着第三个坐标轴(纵向)的方向来叠加一摞数组.可以在一个图像数据的二维码数组上叠加另一幅图像的数据
In [30]: np.dstack((a,b)) Out[30]: array([[[ 0, 0], [ 1, 2], [ 2, 4]], [[ 3, 6], [ 4, 8], [ 5, 10]], [[ 6, 12], [ 7, 14], [ 8, 16]]])
-
列式堆叠(column_stack)
column_stack()函数以列方式对一维数组进行堆叠
使用这张方法堆叠数组,过程类似于hstack()函数In [31]: oned = np.arange(2) In [32]: oned Out[32]: array([0, 1]) In [33]: twice_oned = oned * 2 In [34]: twice_oned Out[34]: array([0, 2]) In [35]: np.column_stack((oned,twice_oned)) Out[35]: array([[0, 0], [1, 2]])
In [36]: np.column_stack((a,b)) Out[36]: array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]]) In [37]: np.column_stack((a,b)) == np.hstack((a,b)) Out[37]: array([[ True, True, True, True, True, True], [ True, True, True, True, True, True], [ True, True, True, True, True, True]], dtype=bool)
-
行式堆叠(row_stack)
row_stack()函数它将数组作为行码放到二维数组中
In [38]: np.row_stack((oned,twice_oned)) Out[38]: array([[0, 1], [0, 2]]) In [39]: np.row_stack((a,b)) Out[39]: array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]]) In [40]: np.row_stack((a,b)) == np.vstack((a,b)) Out[40]: array([[ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True]], dtype=bool)
结束语
如果您对这篇文章有什么意见或者建议,请评论与我讨论.
如果您觉得还不错的话~可以点个喜欢鼓励我哦.
如果您想和我一起学习,请毫不吝啬的私信我吧~
网友评论