pythonにおけるnumpy配列次元の問題

12332 ワード

ndarray配列には厳密な整列要件があり、各次元の列がそれぞれ同じであることが要求されます.ある次元の配列の要素内部の列数と他の要素内部の列数が一致しない場合、その次元は最小次元です.すなわち、リストを配列に変換する過程で、本来は3次元配列に変換しようとしたが、その2次元目のある要素の列数と他の要素の列数が一致しないため、最終的な変換の結果は1次元配列になる
例:3 x 3のリストを定義し、3 x 3の配列に変換しました.
import numpy as np
list = [[[1,2,3],[4,5,6],[7,8,9]],[[11,22,33],[44,55,66],[77,88,99]],[[111,222,333],[444,555,666],[777,888,999]]]
array = np.array(list)
print(array)

結果:
[[[  1   2   3]
  [  4   5   6]
  [  7   8   9]]

 [[ 11  22  33]
  [ 44  55  66]
  [ 77  88  99]]

 [[111 222 333]
  [444 555 666]
  [777 888 999]]]

特定の理由でリストの2 D目に要素が1つ足りない場合、最終結果は次のような1 D配列に変換されます.
import numpy as np
list = [[[4,5,6],[7,8,9]],[[11,22,33],[44,55,66],[77,88,99]],[[111,222,333],[444,555,666],[777,888,999]]]
array = np.array(list)
print(array)

結果:
[list([[4, 5, 6], [7, 8, 9]])
 list([[11, 22, 33], [44, 55, 66], [77, 88, 99]])
 list([[111, 222, 333], [444, 555, 666], [777, 888, 999]])]