(同维)数组组合主要有三种形式:垂直组合,水平组合,深度组合
我们先生成两个数组 a,b
In [1]: import numpy as np In [2]: a= np.arange(11,20).reshape(3,3) In [3]: a Out[3]: array([[11, 12, 13], [14, 15, 16], [17, 18, 19]]) In [4]: b=np.arange(11,20).reshape(3,3) In [5]: b Out[5]: array([[21, 22, 23], [24, 25, 26], [27, 28, 29]])
1)垂直组合
numpy.vstack(a,b)
numpy.concartenate((a,b),axis=0)
axis命名参数表示轴向,0表示第一维,1表示第二维,以此类推
In [6]: np.vstack((a,b)) Out[6]: array([[11, 12, 13], [14, 15, 16], [17, 18, 19], [21, 22, 23], [24, 25, 26], [27, 28, 29]])
In [7]: np.concatenate((a,b),axis=0) Out[7]: array([[11, 12, 13], [14, 15, 16], [17, 18, 19], [21, 22, 23], [24, 25, 26], [27, 28, 29]])2)水平组合
numpy.hstack((a,b))
numpy.concatenate((a,b),axis=1)
In [8]: np.hstack((a,b)) Out[8]: array([[11, 12, 13, 21, 22, 23], [14, 15, 16, 24, 25, 26], [17, 18, 19, 27, 28, 29]])
In [9]: np.concatenate((a,b),axis=1) Out[9]: array([[11, 12, 13, 21, 22, 23], [14, 15, 16, 24, 25, 26], [17, 18, 19, 27, 28, 29]])3)深度组合
numpy.dstack((a,b))
In [10]: c = np.dstack((a,b)) In [11]: c Out[11]: array([[[11, 21], [12, 22], [13, 23]], [[14, 24], [15, 25], [16, 26]], [[17, 27], [18, 28], [19, 29]]])
记住,numpy.concatenate((a,b),axis=2)是错误的用法
In [12]: c=np.concatenate((a,b),axis=2) --------------------------------------------------------------------------- AxisError Traceback (most recent call last) <ipython-input-16-73be7a9decd1> in <module>() ----> 1 c=np.concatenate((a,b),axis=2) AxisError: axis 2 is out of bounds for array of dimension 2