2016-11-09 5 views
3

3D配列aを指定すると、最初のインデックスの各要素に対してnp.tranposeを呼び出す必要があります。例えば
は、アレイ所与:3D np配列の各要素を転置する方法

array([[[1, 1, 1, 1], 
     [1, 1, 1, 1], 
     [1, 1, 1, 1]], 

     [[2, 2, 2, 2], 
     [2, 2, 2, 2], 
     [2, 2, 2, 2]], 

     [[3, 3, 3, 3], 
     [3, 3, 3, 3], 
     [3, 3, 3, 3]]) 

欲しい:

array([[[1, 1, 1], 
     [1, 1, 1], 
     [1, 1, 1], 
     [1, 1, 1]], 

     [[2, 2, 2], 
     [2, 2, 2], 
     [2, 2, 2], 
     [2, 2, 2]], 

     [[3, 3, 3], 
     [3, 3, 3], 
     [3, 3, 3], 
     [3, 3, 3]]]) 

は、本質的に、私は、配列内の各要素を転置します。私はそれを形作ろうとしましたが、それを行う良い方法を見つけることができません。それをループし、それぞれを転置するのは遅すぎるでしょう。何かアドバイス?

+1

は 'transpose'のドキュメントを読んで移調する軸を指定することができます。それはパラメータをとる。 'a.transpose([0,2,1])'のようなものです。 – hpaulj

+0

あなたのアレイは1,2,3で満たされていますか?もしそうなら、単純な変形が可能です: 'arr.reshape(3,4,3)' – Julien

+0

あなたはあいまいです。それはtranposeまたはreshapeの場合があります。 – hpaulj

答えて

6

あなたは、組み込みのnumpyのtransposeメソッドを使用して直接

>>> a = np.array([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], 
        [[2, 2, 2, 2], [2, 2, 2, 2], [2, 2, 2, 2]], 
        [[3, 3, 3, 3], [3, 3, 3, 3], [3, 3, 3, 3]]]) 

>>> print(a.transpose((0, 2, 1))) 

[[[1 1 1] 
    [1 1 1] 
    [1 1 1] 
    [1 1 1]] 

[[2 2 2] 
    [2 2 2] 
    [2 2 2] 
    [2 2 2]] 

[[3 3 3] 
    [3 3 3] 
    [3 3 3] 
    [3 3 3]]] 
関連する問題