1)hstack
hstack函数能将两个多维数组在水平方向上堆叠,例如:
>>>R=arange(9).reshape(3,3)
>>>S=arange(12).reshape(3,4)
>>> R
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> S
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>>T=hstack((R,S))
>>> T
array([[ 0, 1, 2, 0, 1, 2, 3],
[ 3, 4, 5, 4, 5, 6, 7],
[ 6, 7, 8, 8, 9,10, 11]])
注意参与运算的多维数组在水平方向上的个数必须相同。
2)vstack
vstack函数和hstack类似,只不过是在垂直方向上进行堆叠,显然,这个时候要求参与运算的多维数组在垂直方向上的个数要相同。
3)dstack函数
dstack函数是在深度上进行堆叠,请注意下面的示例,在堆叠之后,多维数组的深度(通过shape属性可查看):
>>>m=arange(16).reshape(4,4)
>>> m
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>>n=m.transpose()
>>> n
array([[ 0, 4, 8,12],
[ 1, 5, 9, 13],
[ 2, 6, 10, 14],
[ 3, 7, 11, 15]])
>>> p=dstack((m,n))
>>> p
array([[[ 0, 0],
[ 1, 4],
[ 2, 8],
[ 3, 12]],
[[ 4, 1],
[ 5, 5],
[ 6, 9],
[ 7, 13]],
[[ 8, 2],
[ 9, 6],
[10, 10],
[11, 14]],
[[12, 3],
[13, 7],
[14, 11],
[15, 15]]])
>>>p.shape
(4, 4, 2),一共四组数据,每组4*2个数据元素
4)Concatenate函数
当axis=1的时候表示水平堆叠,当axis=0的时候表示垂直堆叠
>>>m=arange(16).reshape(4,4)
>>>n=m.transpose()
>>>concatenate((m,n),axis=1)
array([[ 0, 1, 2, 3, 0, 4, 8, 12],
[ 4, 5, 6, 7, 1, 5, 9, 13],
[ 8, 9, 10, 11, 2, 6, 10, 14],
[12, 13, 14, 15, 3, 7,11, 15]])
可见,这个和水平堆叠的效果是一样的。