(同维)数组组合主要有三种形式:垂直组合,水平组合,深度组合
我们先生成两个数组 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