2016-11-17 45 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