2016-12-08 15 views
1

私は3dインスタンスのデータセットを表す4dのnumpy配列を持っています。 配列の形が(32, 32, 3, 73257)であると言います。4dのnumpy配列の並べ替え

アレイの形状を(73257, 32, 32, 3)に変更するにはどうすればよいですか?

---質問の更新 ロールアクシスとトランスポーズの両方がこのトリックを行うようです。

返信ありがとうございました!

+1

関連 - http://stackoverflow.com/questions/41022182/change-shape-of-nparray – Divakar

+0

'(3、0、1、2)'を使用した場合、 'transpose'もここでも動作します – Eric

+0

あなたは正しいです。私はできるだけ早く返信を修正します。 – Panos

答えて

4

ためarr[i,j,k,l] == arr2[l,i,j,k]を行いますnp.transpose機能が正確に何をしたい、あなたが交換したい、軸かを制御軸の引数を渡すことができない:

a = np.empty((32, 32, 3, 73257)) 
b = np.transpose(a, (3, 0, 1, 2)) 

bの軸はaの置換されたバージョンです:bの軸0はaの3番目の軸、bの軸1はaの0番目の軸などです。

そのように、あなたは第二または第三位にするサイズ32の軸を指定することができる:

b = np.transpose(a, (3, 1, 0, 2)) 

はまた、所望の形状のアレイを与えるが、以前のものと異なっています。

0

np.rollaxis(arr, axis=-1)のように見えます。例:

>>> arr = np.empty(32, 32, 3, 73257) 
>>> arr2 = np.rollaxis(arr, axis=-1) 
>>> arr2.shape 
(73257, 32, 32, 3) 

これは、すべてのijkl

関連する問題