やっぱりAIだよね 11
今回はベクトルの足し算、引き算、掛け算も!やっていきますー!
◆ベクトルの足し算
pythonで行列を扱うにはNumPyを使います。NumPyを使うと高速に処理することが出来ます、しかし注意が必要なのが、NumPyの場合はリスト内の要素を全て同じデータ型で構成する必要があります。
また、NumPy以外にもPandasやTensorflowなど便利なライブラリが用意されています。
ベクトルどうしの足し算では、各要素をそれぞれ足します。
例えば、a(1 3),b(2 2)があったときにベクトルaとbの和は
a+b = (1+3 3+2) = (4 5)
となります。これだけでもなんとなくわかりますが図で表してみましょう。
ベクトルの大きさは、矢印の長さで表します。そのためこの長さを求めることでベクトルの合計値を計算することが出来ます。
ベクトルの大きさを数式で表すときは、|a|のようにアルファベットの両端を|で囲みます。
ベクトルの長さは平方根の定理を使って計算することが出来ます。
また、NumPyを使えば簡単に計算することが出来ます。
import numpy as np
import math
a = np.array([1,3])
b = np.array([2,2])
print(a + b) #ベクトルの和
⇒[3 5]
print(a - b) #ベクトルの差
⇒[-1 1]
print(np.linalg.norm(a)) #ベクトルaの大きさ
⇒3.1622776601683795
print(np.linalg.norm(b)) #ベクトルbの大きさ
⇒2.8284271247461903
numpy.linalg.normは、2点間の長さ(ノルム)を返してくれます。norm関数には他にも出来ることがありますが今回はこれだけで。機械学習のターンになったらお世話になるそうです。
◆ベクトルの掛け算
2つのベクトルの掛け算をするとき使われるのが「内積」です。
数式で表すときは「・」を使います。内積では、それぞれの要素をかけた後に更にその和を求めます。
ベクトルa(a1 a2)とb(b1 b2)の内積を求める場合は、
a・b=a1b1 + a2b2
となります。
ここで注意が必要なのが、ベクトル通しの足し算引き算の場合は答えがベクトルになりましたが、掛け算の場合はスカラー(数値)になります。
例としてa(3 2)とb(-2 3)の内積を求めてみます。
計算するとスカラーが0になりますね。
ベクトルの内積で答えが0になる場合は、その2つのベクトルが垂直になっているという法則があります。
また、内積が正のときは2つのベクトルの角度が90度より小さく、負のときは角度が90度よりも大きくなります。
内積はdot関数を使うと簡単に求めることが出来ます。
import numpy as np
a = np.array([3,2])
b = np.array([1,5])
print(a.dot(b)) #ベクトルa・bの内積
⇒13
c = np.array([2,1])
d = np.array([-1,2])
print(c.dot(d)) #ベクトルc・dの内積
⇒0
更に、内積には次の式が成り立ちます。
-|a||b| ≦ a・b ≦ |a||b|
この式を「コーシー・シュワルツの不等式」と言います。
これも今後使うらしいので覚えておきましょう!
今回はここまで。
この記事が気に入ったらサポートをしてみませんか?