Numpy配列を変形させる関数がreshapeとresizeです.この関数を使うと1次配列から2次配列へ変形できます.本記事ではこれら関数の使い方と2つの違いについて解説しております.
スポンサーリンク
reshape関数
reshape関数を使うとNumpyで作成した配列を変形させることができます.例えば1次元配列を2次元配列に変形させたり,この逆もできるようになります.
・1次配列を2次元配列に変形してみます.
[IN]
import numpy as np
a=np.arange(1, 10)
print("元の配列 \n",a)
b=np.reshape(a,(3,3))
print("変形後の配列 \n",b)
[OUT]
元の配列
[1 2 3 4 5 6 7 8 9]
変形後の配列
[[1 2 3]
[4 5 6]
[7 8 9]]
1次元配列から2次元配列に変更できました.
reshape関数は元になる配列情報を参照して配列を変形しています.どちらかの配列内の要素値が変わると互いに影響しあうので注意が必要です.
・配列aをreshapeで変形し配列bとします.この後に配列aの要素の値を変えてみて,配列bの値がどのようになるか確認します.
[IN]
import numpy as np
a=np.arange(1, 10)
print("・元の配列 \n",a)
b=np.reshape(a,(3,3))
print("・変形後の配列 \n",b)
a[0:9]=99 #元の配列の値を変更
print("\n・元の配列の値を変更 \n",a)
print("・変形後の配列の値を確認する\n",b)
[OUT]
・元の配列
[1 2 3 4 5 6 7 8 9]
・変形後の配列
[[1 2 3]
[4 5 6]
[7 8 9]]
・元の配列の値を変更
[99 99 99 99 99 99 99 99 99]
・変形後の配列の値を確認する
[[99 99 99]
[99 99 99]
[99 99 99]]
配列bの要素値は,配列aと同じになりました.
ndarray.resize関数
resize関数は元の配列を変形して新しい配列を作成します.reshapeは元配列と変形後の配列の要素数が同じである必要がありますが,resizeは変形後の要素が異なっていても配列を強制的に作成します.
[IN]
import numpy as np
a=np.arange(1, 10)
print("・元の配列 \n",a)
b=np.resize(a,(3,3))
print("・変形後の配列 \n",b)
a[0:9]=99 #元の配列の値を変更
print("\n・元の配列の値を変更 \n",a)
print("・変形後の配列の値を確認する\n",b)
[OUT]
・元の配列
[1 2 3 4 5 6 7 8 9]
・変形後の配列
[[1 2 3]
[4 5 6]
[7 8 9]]
・元の配列の値を変更
[99 99 99 99 99 99 99 99 99]
・変形後の配列の値を確認する
[[1 2 3]
[4 5 6]
[7 8 9]]
元配列の数値が変わっても,resizeで変形した場合の配列内の値は変わらない事が確認できました.
下記にeshape関数とresize関数について表にしました.
項目 | reshape | resize |
配列の変形 | 〇 | 〇 |
元配列と違う 要素数で変形が可能 | × | 〇 |
元配列と変形後の配列で要素値 が相互に繋がっている. | 〇 | × |
引数にorderがある | 〇 | × |
reshape関数とresize関数についてどちらも配列を変形させるものですが,本記事で使い方と違いが理解が深まったのではないでしょうか.
スポンサーリンク
コメント