web-dev-qa-db-ja.com

Pythonリストをndim配列に整形します

こんにちは、長さ2800のフラットリストがあり、28個の変数ごとに100個の結果が含まれています。以下は、2変数の4個の結果の例です。

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

リストを配列(2,4)に変更して、各変数の結果が単一の要素になるようにします。

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

以下は同じ順序で値を示していますが、これは正しくありません:

np.shape = (2,4) 

例えば。

[[0,0,0,0]
 [1,1,1,1]]
14
BenP

フラット化された元のリスト/配列から新しいシェイプが行ごとに塗りつぶされる(最後の次元が最も速く変化する)ことを考え直すことができます。

簡単な解決策は、リストを(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]])
19
kazemakase