3

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

np.reshape(-1)

要素を3つの別々の整数に分割し、1x52560配列を作成するようです。したがって、元の配列を再配置する新しい方法、または新しいnp.reshape配列(まだ順番になっている)の要素を3つのリストにグループ化する方法が必要です。

ご協力いただきありがとうございます。

4

1 に答える 1

6

明示的にできない理由はありますか?のように:

>>> 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]])

でそれを行うこともできます-1。適切なサイズの別の引数とペアにする必要があります。

>>> 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配列として扱うのが最も簡単です。

于 2011-07-08T16:51:59.517 に答える