arrayの形状と変換

numpy_l = np.array([[1,2,3],[4,5,6]])
# numpy_lの形状を出力
print(numpy_l.shape)
(2, 3)

2行3列であることを表してる.

次元数の確認

# Array[[1,2], [3,4]]の次元数を表示する.
numpy_l = np.array([[1,2], [3,4]])
print(numpy_l.ndim)
2

ndimは次元数なので,len(shape)に等しい
→つまり、行と列が一つずつカウントされて、2という事→2次元

形状変換

numpy.ndarray.reshape()を使えば要素を変えない(数字は同じ)まま形状だけを変えられる

numpy_l = np.array([[1,2,3],[4,5,6]])
# numpy_lの形状変換
print(numpy_l.reshape((3,2)))
[[1 2]
[3 4]
[5 6]] 要素を一列に並べて、区切っているイメージ

reshape()の引数には「-1」を指定することができる.
こうすると他の次元の長さに合わせて自動で形状変換ができる

numpy_l = np.array([1,1,1,2,2,2,3,3,3])
print(numpy_l.reshape(3,-1)) 3列になるように適当に要素を区切っている?
[[1 1 1]
 [2 2 2]
 [3 3 3]]
numpy_3 = np.array([[1,1,1],[1,2,2],[2,2,3],[3,3,3]])
print(numpy_3.reshape((3,-1)))
print(numpy_3.reshape((2,-1)))
print(numpy_3.reshape((5,-1)))
[[1 1 1 1]
 [2 2 2 2]
 [3 3 3 3]]
[[1 1 1 1 2 2]
 [2 2 3 3 3 3]]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [8], in <cell line: 4>()
      2 print(numpy_3.reshape((3,-1)))
      3 print(numpy_3.reshape((2,-1)))
----> 4 print(numpy_3.reshape((5,-1)))

ValueError: cannot reshape array of size 12 into shape (5,newaxis)

要素の数が合わないと、エラーが出る。

コメント

タイトルとURLをコピーしました