numpy将切片附加到二维数组以使其成为三维数组

时间:2016-11-17 16:54:53

标签: python arrays numpy multidimensional-array append

我有5 numpy数组shape (5,5)。我想要实现的是将这些5 numpy数组组合成一个形状数组(5,5,5)。我的代码如下所示,但不起作用:

combined = np.empty((0, 5, 5), dtype=np.uint8)

for idx in range(0, 5):
    array = getarray(idx) # returns an array of shape (5,5)
    np.append(combined, img, axis=0)

我想如果我将第一个轴设置为0,它将附加在此轴上,以便最终形状为(5,5,5)。这有什么不对?

2 个答案:

答案 0 :(得分:1)

我自己想出来了:

combined = np.empty((0, 5, 5), dtype=np.uint8)

for idx in range(0, 5):
    array = getarray(idx) # returns an array of shape (5,5)
    array array[np.newaxis, :, :]
    combined = np.append(combined, img, axis=0)
print combined.shape + returns (5,5,5)

答案 1 :(得分:0)

我试试:

A = np.array([getarray(idx) for idx in range(5)])

或者

alist = []
for idx in range(5):
   alist.append(getarray(idx))
A = np.array(alist)

附加到列表比附加到数组更快。后者创建了一个全新的阵列 - 正如您所发现的那样。

dynamically append N-dimensional array - 同样的问题,从不同的维度开始。