2016-11-17 95 views
1

我有5 numpy数组与shape (5,5)。我想要实现的是将这些5 numpy数组组合成一个形状的数组(5,5,5)。我的代码看起来像以下但不工作:numpy将切片追加到二维数组以使其具有三维空间

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) 。这里有什么问题?

回答

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

我想尝试:

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 - 相同的问题,从不同的维度开始。

+0

我已经回答了我的问题。但是,谢谢。你为什么提出另一个答案?你认为这样更好吗? – thigi

+0

是的,我认为它更快。你可以坚持你的'np.append',但看看它的代码,这样你就明白它在做什么。并尝试一些简单的时间测试。增量构建阵列是一个常见的SO问题。 – hpaulj

+0

是的,我不需要速度。我只需要完成它。不过谢谢! – thigi

相关问题