2011-07-08 2 views
3

私は48x365要素のnumpy配列を持っています。各要素は3つの整数を含むリストです。私は要素としてすべてのリストをそのまま1x17520の配列に変換できるようにしたい。数字の配列をPythonで作り直す

np.reshape(-1) 

は、要素を3つの別々の整数に分割し、1x52560の配列を作成するようです。だから私は、元の配列を並べ替える新しい方法や、新しいnp.reshape配列の要素を(まだ順番に)3のリストに戻してグループ化する方法が必要です。

ありがとうございました。

答えて

5

明示的に行うことはできない理由はありますか?以下のように:あなたはまた、-1でそれを行うことができ

>>> a = numpy.arange(17520 * 3).reshape(48, 365, 3) 
>>> a.reshape((17520,3)) 
array([[ 0,  1,  2], 
     [ 3,  4,  5], 
     [ 6,  7,  8], 
     ..., 
     [52551, 52552, 52553], 
     [52554, 52555, 52556], 
     [52557, 52558, 52559]]) 

、それだけで適切なサイズの別の引数とペアにする必要があります。

>>> a.reshape((17520,-1)) 
array([[ 0,  1,  2], 
     [ 3,  4,  5], 
     [ 6,  7,  8], 
     ..., 
     [52551, 52552, 52553], 
     [52554, 52555, 52556], 
     [52557, 52558, 52559]]) 

または

>>> a.reshape((-1,3)) 
array([[ 0,  1,  2], 
     [ 3,  4,  5], 
     [ 6,  7,  8], 
     ..., 
     [52551, 52552, 52553], 
     [52554, 52555, 52556], 
     [52557, 52558, 52559]]) 

あなたにも、レコードの配列を作成することができ、その少し後に私に起こった - これは、いくつかの状況で適切な場合があります:

a = numpy.recarray((17520,), dtype=[('x', int), ('y', int), ('z', int)]) 

これはあなたが試した元の方法で、すなわちreshape(-1)で再構成することができます。それでも、larsmansのコメントによれば、データを3D配列として扱うのは最も簡単です。

+1

+1。これはNumpy配列の中にリストを保持するよりはるかに簡単です。 –

+0

はい。私が欠けていたのは、私が本当に3次元の配列、48x365x3を持っているということです。私は3つが影響を受けていないと仮定していましたが、npは(正しく)3次元として扱いました。余分な次元をnp.reshape(-1,3)に保つことで問題は解決します。ありがとう –

関連する問題