(57) numpyで内積

投稿者: | 2014年9月4日

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]])

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です