2016-03-20 127 views
2

也許一個簡單的問題,但我使用numpy,並迭代產生9x9x9矩陣。添加矩陣n維陣列

我想堆疊這些,所以我最終與Nx9x9x9,但使用追加,堆棧和堆棧它似乎引導的維度之一,而不是將這些作爲單獨的對象添加。任何想法我可以做到這一點?

感謝

回答

2

這可以通過使用np.vstack但被解析爲得到這個要需要添加另一個維度(空單)作爲第一個形狀。否則,你會堆您當前的第一維度:

import numpy as np 
a = np.ones((1,2,2,2)) 
print(a.shape) # (1, 2, 2, 2) 

,或者如果您創建數組,然後通過添加另一個維度:

a = np.ones((2,2,2)) 
a = a[None, :] # Adds an dimension as first 

,然後堆疊起來,你可以使用:

b = np.vstack([a,a]) 
print(b.shape) # (2, 2, 2, 2) 
c = np.vstack([b,a]) 
print(c.shape) # (3, 2, 2, 2) 
c.shape 

你說你反覆創建它們,但如果你只需要最後的結果,你甚至不需要使用vstack只需創建一個新的數組:

a = np.ones((9,9,9)) 
b = np.ones((9,9,9)) 
c = np.ones((9,9,9)) 
d = np.ones((9,9,9)) 
res = np.array([a, b, c, d]) 
print(res.shape) # (4, 9, 9, 9) 
+0

非常感謝:)我不知道如何爲我的3維矩陣添加額外的維度!非常有幫助 – JB1

+1

@ i-am-spartacus不客氣!如果這真的解決了你的問題,那麼如果你贊成或接受答案就會很好。 :) – MSeifert

+0

今天我學到了第二件事......再次感謝! – JB1