17,289 views
この記事は最終更新から 1810日 が経過しています。
以下のなす角45度の二つのベクトルの内積を求める。
a = ( 3 , 3 )
b = ( 5 , 0 )
>>> import numpy as np >>> a = np.array([3, 3]) >>> a array([3, 3]) >>> b = np.array([5, 0]) >>> b array([5, 0])
numpyでは、ベクトルの内積を numpy.dot で求められる。
>>> np.dot(a, b) 15
検算のため、これを |a||b|cos(Θ) で求めてみる。
>>> da = np.linalg.norm(a)
>>> da
4.2426406871192848
>>> db = np.linalg.norm(b)
>>> db
5.0
>>> rad = np.pi * 45 / 180
>>> rad
0.7853981633974483
>>>
>>> da * db * np.cos(rad)
14.999999999999998
ちなみに numpy.linalg.norm はベクトル長を求めることができる。
>>> v = np.array((1,1))
>>> np.linalg.norm(v)
1.4142135623730951
行列の積も numpy.dot で求められる。
>>> a=np.array([[1,2,3],[4,5,6]]) >>> a array([[1, 2, 3], [4, 5, 6]]) >>> b=np.array([[1,3,5,7],[2,4,6,8],[4,5,6,7]]) >>> b array([[1, 3, 5, 7], [2, 4, 6, 8], [4, 5, 6, 7]]) >>> np.dot(a,b) array([[ 17, 26, 35, 44], [ 38, 62, 86, 110]])