python numpy 中堆叠函数(stack())总结

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)的数组。

上一篇:python丨pandas-bokeh制作专业的可视化图表(仪表盘如何结论先行)


下一篇:【Spring】8、Spring框架中的单例Beans是线程安全的么