NumPyでベクトルを生成する方法について学習しました。ここではベクトルの基本的な演算について学習します。
ベクトルの演算
加法、スカラー倍、内積、外積は以下の方法で計算することが可能です。
ndarrayの演算
ndarrayには演算が定義されていて、+、-でベクトルの加減演算を行うことができます。また、*、/で要素ごとに積・商(いわゆるアダマール積)を計算することができます。
import numpy as np x = np.array([1, 2, 3]) y = np.array([4, 5, 6]) x + y # array([5, 7, 9]) x - y # array([-3, -3, -3]) x * y # array([ 4, 10, 18]) x / y # array([ 0.25, 0.4 , 0.5 ])
スカラー倍
*演算子で定数を作用させるとスカラー倍することができます。
import numpy as np x = np.array([1, 2, 3]) a = 100 x * a # array([100, 200, 300]) a * x # array([100, 200, 300]) #
内積
np.dotで内積を計算することができます。例えば以下のサンプルでは直行する基底の内積が0になることが確認できます。
import numpy as np e1 = np.array([1, 0, 0]) e2 = np.array([0, 5, 0]) np.dot(e1, e2) # 0
クロス積
最後にクロス積(=外積)です。numpy.crossで求めることができます。
import numpy as np e1 = np.array([1, 0, 0]) e2 = np.array([0, 5, 0]) np.cross(e1, e2) # array([0, 0, 5]) np.cross(e2, e1) # array([0, 0, -5]) #
上のサンプルでは結果が法線ベクトルになっていることが分かります。