numpy:如何将3D阵列迭代地堆叠在行中?

时间:2018-11-07 00:14:29

标签: python numpy

我试图将生成3D数组的计算结果堆叠到行(轴= 0)中。我不知道结果是什么。

import numpy as np

h = 10
w = 20
c = 30
result_4d = np.???   # empty

for i in range(5):
   result_3d = np.zeros((h, w, c))  #fake calculation
   result_4d = np.???  # stacked result_3ds on axis=0

return result_4d

我尝试了numpy * stack调用的各种排列,但不可避免地遇到形状不匹配错误。

1 个答案:

答案 0 :(得分:1)

首先将其放入列表中,然后堆叠。

MyAwesomerGenerator = (2**idx for idx in range(limit))

如果您要循环更新,则可以执行以下操作:

h = 10
w = 20
c = 30
l = []
for i in range(5):
    result_3d = np.zeros((h, w, c))  #fake calculation
    l.append(result_3d)
res = np.stack(l, axis=-1)

res.shape # (10, 20, 30, 5)

# move stacked axis around ...
np.transpose(res, (3,0,1,2)).shape # (5, 10, 20, 30)