2010-12-03 34 views
5

私は数百の10x10アレイのリストを1つのNx10x10アレイにまとめたいと思っています。最初に私は、単純な2D numpy配列のリストを3D numpy配列に変換しますか?

newarray = np.array(mylist)

を試してみましたしかし、それはで返さ「とValueError:順序で配列要素を設定します」

次に、dstack()のオンラインドキュメントが見つかりました。「これは2Dアレイ(画像)を1つの3Dアレイに処理するための簡単な方法です。」それはまさに私がやろうとしていることです。しかし、

newarray = np.dstack(mylist) 

が私に語った:私のすべての配列は10×10であるため、奇数である、「とValueError配列の次元はD_0を除き同意しなければなりません」。 dstack()がリストの代わりにタプルを期待していたのかもしれないと思ったかもしれませんが、

同じ結果が出ました。

ここでは、私が間違ってやっていることや正しいことを知るために、ここや他の場所で検索するのに約2時間を費やしました。私はリストのリストをリストのリストに変換してから3D配列に戻そうとしましたが、どちらもうまくいきませんでした(私は配列のリストと "配列の設定"要素シーケンスとして「エラー」)。

ご協力いただければ幸いです。

+1

「[item.shape!=(10、10)] = mylistのアイテムのitem.shape」のようなことをしたらどうなるでしょうか? (つまり、あなたはすべての配列が同じ形をしていると確信していますか?) –

+1

dstackここで私の人生は何だったのですか?私はhstackとvstackを[:、:、newaxis]と混ぜて使っています – wim

答えて

13
newarray = np.dstack(mylist) 

が有効です。例えば:

import numpy as np 

# Here is a list of five 10x10 arrays: 
x=[np.random.random((10,10)) for _ in range(5)] 

y=np.dstack(x) 
print(y.shape) 
# (10, 10, 5) 

# To get the shape to be Nx10x10, you could use rollaxis: 
y=np.rollaxis(y,-1) 
print(y.shape) 
# (5, 10, 10) 
+0

* facepalm *私のイメージのうち10x8だったので、それは純粋に私自身の不注意でした。しかし、私はローラー軸の部分についてはあまり考えなかった。それは助けになった。早速のご返事ありがとうございます! – James

関連する問題