2017-11-24 12 views
2

iはnumpy配列の形状(12、)を持っています。 [[1,2,3,4,5,6,7,8,9,10,11,12]]ことは私がa.reshapeを試してみましたN長ベクトルを3x(N/3)行列に再整形する方法

[[1, 4, 7, 10], 
    [2, 5, 8, 11], 
    [3, 6, 9, 12]] 

になったので、私はそれを再構築したいです(3,4)とa.reshape(-1,4)ですが、私が望むものを生み出すものは何もありません。これを行う簡単な方法があるのですか、新しい配列を作成し、各値を個別に設定する必要がありますか?

答えて

3

リシェイプ長3の後者の2つの中に第一の軸を分割して転置する -

a.reshape(-1,3).T 

または反転パラメータを整形とfortranために整形 -

a.reshape(3,-1, order='F') 

サンプルラン -

In [714]: a 
Out[714]: array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) 

In [715]: a.reshape(-1,3).T 
Out[715]: 
array([[ 1, 4, 7, 10], 
     [ 2, 5, 8, 11], 
     [ 3, 6, 9, 12]]) 

In [719]: a.reshape(3,-1, order='F') 
Out[719]: 
array([[ 1, 4, 7, 10], 
     [ 2, 5, 8, 11], 
     [ 3, 6, 9, 12]]) 
+0

nuにメモを追加する価値があるのだろうかと思います'(。(A、B、C))。Tは' .reshape((C、B、A)、order = 'F')と同じです。 'order'引数 – Eric

+0

@ Eric実際には意味があり、より簡単に聞こえます。だから、確かに、私は思うのドキュメントにその方法を追加する価値がある。 – Divakar

関連する問題