次回より『ヒデログ』とご検索ください

【Python入門】Numpyの配列の形を変える「reshape」の使い方

Numpyのreshapeメソッドについて解説します。

Numpyのreshapeに使い方

Numpyのreshapeには2種類あります。

  • numpy.ndarray.reshape
  • numpy.reshape
この違い見ただけではすぐに理解できないかもしれませんので、実際にソースコードデモていきましょう。

numpy.ndarray.reshape

numpya.ndarray.reshapeについて解説します。マニュアルは以下にあります。一部抜粋して解説します。
numpy.ndarray.reshape — SciPy.org Numpy Manual

import numpy as np

arr1=np.arange(6)
print(arr1)
# [0, 1, 2, 3, 4, 5]

print(arr1.shape)
# (6,)
# 6つの要素を持つベクトル

print(arr1.ndim)
# 1
# 1次元

arr1_3_2=arr1.reshape(3,2)
print(arr1_3_2)
# [[0 1], [2 3], [4 5]]

print(arr1_3_2.shape)
# (3, 2)
# 3x2の多次元配列

print(arr1_3_2.ndim)
# 2次元
実行結果
[0 1 2 3 4 5]
(6,)
1

[[0 1], [2 3], [4 5]]
(3, 2)
2

ソースコード解説

arr1.shapeは要素の形を表しています。np.arange(6)から作成したので1次元で6つの要素になっています。

arr1.ndimは次元数を表しています。上記同様のため1次元になります。

arr1_3_2=arr1.reshape(3,2)reshape()でどのような形にするか決めることができます。例では2次元に変更していますが、3次元、4次元等自由な次元に変更することができます。

numpy.reshape

numpya.reshapeについて解説します。マニュアルは以下にあります。一部抜粋して解説します。
numpy.reshape — SciPy.org Numpy Manual


import numpy as np
arr2=np.arange(6)
arr2_3_2_c=np.reshape(arr2,[3,2])
# 同じ
# arr2_3_2_c=np.reshape(arr2,[3,2],order="C")
print(arr2_3_2_c)
arr2_3_2_f=np.reshape(arr2,[3,2],order="F")
print(arr2_3_2_f)
実行結果
[[0 1] [2 3] [4 5]]

[[0 3] [1 4] [2 5]]

コードの解説

np.reshape(arr2,[3,2])arr2(3,2)の多次元配列に変形している。

C型、つまり行優先の順序
より高い次元を先にトラバースする(例えば、第0軸の処理に進む前に第1軸を処理する)。

Fortran型、つまり列優先の順序
より高い次元を後にトラバースする(例えば、第1軸の処理に進む前に第0軸を処理する)。
出典:Pythonによるデータ分析入門

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です