NumPy ではベクトルを行列に変換したり,行列を平らなベクトルに変換することもできます.
ベクトルを行列に
import numpy as np # プログラムの先頭でモジュールを読み込む
# ベクトルを行列に変換する
a = np.array([1, 2, 3, 4, 5, 6])
A = a.reshape(2, 3)
print(A)
[[1 2 3] [4 5 6]]
行列を平らに
# 行列を平らに変換
a = A.ravel()
print(a)
[1 2 3 4 5 6]
なお,行列を平らにするメソッドには flatten()
もあります.ravel()
では要素を共有するが,flatten()
では要素をコピーして変換します.したがって,値を書き換えたときに動作が異なるのとともに,コピーを行わない ravel()
の方が処理効率の面では効率的です.
flatten()で平らに
A = np.array([[1,2,3,4], [5,6,7,8]])
a = A.flatten() # コピーして変換
print(A)
print(a)
[[1 2 3 4] [5 6 7 8]] [1 2 3 4 5 6 7 8]
要素を書き換える
A[0,1] = 10 # a には影響しない
a[6] = 20 # A には影響しない
print(A)
print(a)
[[ 1 10 3 4] [ 5 6 7 8]] [ 1 2 3 4 5 6 20 8]
A = np.array([[1,2,3,4], [5,6,7,8]])
a = A.ravel() # 平らに
print(A)
print(a)
[[1 2 3 4] [5 6 7 8]] [1 2 3 4 5 6 7 8]
A[0,1] = 10 # a にも影響する
a[6] = 20 # A にも影響する
print(A)
print(a)
[[ 1 10 3 4] [ 5 6 20 8]] [ 1 10 3 4 5 6 20 8]