2016-03-20 23 views
2

おそらく簡単な質問ですが、numpyを使用して9x9x9行列を繰り返し生成しています。numpyでn次元配列に行列を追加する

これらをスタックしたいので、Nx9x9x9になりますが、append、stack、stackを使用すると、これらを個々のオブジェクトとして追加するのではなく次元の1つをベクトル化するようです。どのように私はこれを行うことができます任意のアイデア?

おかげ

答えて

2

これはnp.vstackを使用して解決することができますが、あなたが最初のように別の次元(空1)を追加する必要がしたい形でこれを取得します。そうしないと、あなたはあなたの現在の第1の次元スタックになります。

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 

あなたはiterativlyを作成すると言っていますが、最終的な結果が必要な場合は、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

私が今日学んだ2番目の事...もう一度ありがとう! – JB1

関連する問題