条件如下:
1)我们有一个 ND 数组列表,这个列表的长度未知M
2) 每个数组的维度相等,但未知
3)每个数组应沿第 0 维拆分,结果元素应沿长度的第 1 维分组M
,然后沿相同长度的第 0 维堆叠
4)结果排名应该是N+1
,第一维的长度应该是M
以上与 相同zip
,但在 ND 数组的世界中。
目前我执行以下方式:
xs = [list of numpy arrays]
grs = []
for i in range(len(xs[0])):
gr = [x[i] for x in xs]
gr = np.stack(gr)
grs.append(gr)
grs = np.stack(grs)
我可以用批量操作写得更短吗?
更新
这就是我想要的
将 numpy 导入为 np
sz = 2
sh = (30, 10, 10, 3)
xs = []
for i in range(sz):
xs.append(np.zeros(sh, dtype=np.int))
value = 0
for i in range(sz):
for index, _ in np.ndenumerate(xs[i]):
xs[i][index] = value
value += 1
grs = []
for i in range(len(xs[0])):
gr = [x[i] for x in xs]
gr = np.stack(gr)
grs.append(gr)
grs = np.stack(grs)
print(np.shape(grs))
此代码显然可以正常工作,生成 shape 数组(30, 2, 10, 10, 3)
。是否可以避免循环?