1. ホーム
  2. python

[解決済み] Python リストの ndim 配列への再形成

2022-02-01 23:58:05

質問

長さ2800のフラットリストがあり、28の変数それぞれについて100の結果が入っています。以下は、2 つの変数に対して 4 つの結果がある場合の例です。

[0,
 0,
 1,
 1,
 2,
 2,
 3,
 3]

リストを配列(2,4)に整形して、各変数の結果が1つの要素になるようにしたいのですが。

[[0,1,2,3],
 [0,1,2,3]]

解決方法は?

新しい形状は、平坦化された元のリスト/配列から行ごとに(最後の寸法が最も速く変化する)埋められると考えることができます。

簡単な方法は、リストを(100, 28)の配列に整形し、それを転置することです。

x = np.reshape(list_data, (100, 28)).T

更新された例について更新しました。

np.reshape([0, 0, 1, 1, 2, 2, 3, 3], (4, 2)).T
# array([[0, 1, 2, 3],
#        [0, 1, 2, 3]])

np.reshape([0, 0, 1, 1, 2, 2, 3, 3], (2, 4))
# array([[0, 0, 1, 1],
#        [2, 2, 3, 3]])