python numpy 中堆叠函数总结
构造数据
import numpy as np
a = np.arange(1,7).reshape((2,3))
b = np.arange(7,13).reshape((2,3))
c = np.arange(13,19).reshape((2,3))
print("a",a)
print("b",b)
print("c",c)
a [[1 2 3]
[4 5 6]]
b [[ 7 8 9]
[10 11 12]]
c [[13 14 15]
[16 17 18]]
代码块
d =np.hstack((a,b,c))#水平堆叠<-->np.concatenate((a,b),axis = 1)
e =np.vstack((a,b,c))#垂直堆叠<-->np.concatenate((a,b),axis = 0)
#堆叠数组比输入多一维
f =np.stack((a,b,c),axis = 0)#以第一维按垂直方向堆叠
#(表示将最外层[ ]里,只有两个元素,直接堆叠)
g =np.stack((a,b,c),axis = 1)#以第二维按垂直方向堆叠
#(第二层的[ ],每个第二层的[ ]都有三个元素,因此对应元素就行堆叠)
h =np.stack((a,b,c),axis = 2)#以第三维按水平方向堆叠
#(每一个子数组是一列)
print("d:",d)
print("e:",e)
print("f:",f)
print("g:",g)
print("h:",h)
d: [[ 1 2 3 7 8 9 13 14 15]
[ 4 5 6 10 11 12 16 17 18]]
e: [[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]
[13 14 15]
[16 17 18]]
f: [[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]
[[13 14 15]
[16 17 18]]]
g: [[[ 1 2 3]
[ 7 8 9]
[13 14 15]]
[[ 4 5 6]
[10 11 12]
[16 17 18]]]
h: [[[ 1 7 13]
[ 2 8 14]
[ 3 9 15]]
[[ 4 10 16]
[ 5 11 17]
[ 6 12 18]]]
np.stack的官方解释为 对指定axis增加维度。
故查看堆叠后的shape也可发现stack是按照axis维度变化的。
shape结果:
print("f:",f.shape)
print("g:",g.shape)
print("h:",h.shape)
f: (3, 2, 3)
g: (2, 3, 3)
h: (2, 3, 3)
堆叠之前,a,b,c均为(2,3)的数组。