np.dot()関数の使い方の詳細

3105 ワード

基本プロフィール
dot関数はnumpyライブラリの関数であり、主にマトリクスの乗算に用いられます。ベクトル内積、多次元マトリックス乗算、および行列とベクトルの乗算を含みます。
1.ベクトル内積
ベクトルは1次元のマトリクスであり、2つのベクトルが内積演算を行う場合、2つのベクトルに含まれる要素の個数は同じであることを保証する必要があります。
例1:

import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7])
y = np.array([2, 3, 4, 5, 6, 7, 8])
result = np.dot(x, y)
print(result)

出力結果:
168
計算の過程はベクトルの中の対応する元素を掛け合わせて、更に所得を加算します。つまり、通常のベクトル乗算です。
2.マトリックス乗算
二つの行列(x,y)が乗算できる場合、以下の条件を満たす必要があります。
xはmです×n次行列,yはnである×p次マトリックス、
掛け合わせた結果、resultはmです。×p次行列
例2:

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4]])
y = np.array([[0, 1, 1, 1],
   [1, 2, 0, 1],
   [0, 0, 2, 1]])
result = np.dot(x, y)

print(result)
print("x  :" + str(x.shape))
print("y  :" + str(y.shape))
print("result  :" + str(result.shape))
結果:
[[2]  5  7  6)
 [ 4 11 11 11]
xステップ数:(2,3)
y階数:(3,4)
reult階数:(2,4)
dot(x,y)はdot(y,x)に等しくなく、マトリックス乗算は交換法則を満たしていません。
例3:

import numpy as np

x = np.array([[1, 2],
   [3, 4]])
y = np.array([[2, 2],
   [1, 2]])
result1 = np.dot(x, y)
result2 = np.dot(y, x)

print("result1 = " + str(result1))
print("result2 = " + str(result2))

結果:
reull t 1=[4]  6)
           [10 14]
reull t 2=[[8 12]
           [ 7 10]
演算前提を満たしていないと演算できません。例2のdot(y,x)は演算条件を満たしていないので、演算はエラーとなります。
例4:

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4]])
y = np.array([[0, 1, 1, 1],
   [1, 2, 0, 1],
   [0, 0, 2, 1]])
result = np.dot(y, x)

print(result)
結果:
Traceback(most recent call last):
  File「numpy 1.py」、ライン96、in<module>
    result=np.dot(y,x)
  File"<__uu u u;>アラリfunction_internals>「ライン6、in dot」
ValueError:sharpes(3,4)and(2,3)not aligned:4(dim 1)!2(dim 0)
3.行列とベクトルの乗算
マトリクスxはmです×n次、ベクトルyはn次ベクトルであれば、マトリクスxとベクトルyは乗算演算ができ、結果はm次ベクトルとなります。演算を行う場合は、まず後の項目を自動転送してからかけ算を行います。
例5:

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4]])
y = np.array([1, 2, 3])
result = np.dot(x, y)

print(result)
print("x  :" + str(x.shape))
print("y  :" + str(y.shape))
print("result  :" + str(result.shape))

結果:
[14 23]
xステップ数:(2,3)
y階数:(3,)
reult階数:(2,)
例6:依然として交換法則を満たしていない

import numpy as np

x = np.array([[1, 2, 3],
   [3, 4, 4],
   [0, 1, 1]])
y = np.array([1, 2, 3])
result1 = np.dot(x, y) # 1×1 + 2×2 + 3×3 = 14(result1      )
result2 = np.dot(y, x) # 1×1 + 2×3 + 3×0 = 7 (result2      )

print("result1 = " + str(result1))
print("result2 = " + str(result2))
結果:
reull t 1=[14 23]  5)
reull t 2=[7 13 14]
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。