np.dot()函数用法(亲测矩阵算法)
Numpy中dot()函數主要功能有兩個:向量點積和矩陣乘法。
格式:x.dot(y) 等價于 np.dot(x,y) ———x是m*n 矩陣 ,y是n*m矩陣,則x.dot(y) 得到m*m矩陣。
一、向量點積
如果處理的是一維數組,則得到的是兩數組的內積。
例1:
import numpy as np
x=np.array([0,1,2,3,4])#等價于:x=np.arange(0,5)
y=x[::-1]
print x
print y
print np.dot(x,y)
?
輸出:
[0 1 2 3 4]
[4 3 2 1 0]
10
例2:
import numpy as np
x=np.arange(0,5)
y=np.random.randint(0,10,5)
print x
print y
print np.dot(x,y)
輸出:
[0 1 2 3 4]
[5 1 0 9 2]
36
二、矩陣乘法
如果是二維數組(矩陣)之間的運算,則得到的是矩陣積
1.np.dot(x, y), 當x為二維矩陣,y為一維向量,這時y會轉換一維矩陣進行計算
首先,我們來看一下一維向量和一位矩陣的不同
例3:
import numpy as np
x=np.arange(0,5)
y=np.random.randint(0,10,size=(5,1))
print x
print y
print "x.shape:"+str(x.shape)
print "y.shape"+str(y.shape)
print np.dot(x,y)
輸出:
[0 1 2 3 4]
[[3]
?[7]
?[2]
?[8]
?[1]]
x.shape:(5,)
y.shape(5, 1)
[39]
可以看出一維向量的shape是(5, ), 而一維矩陣的shape是(5, 1), 若兩個參數x和y中有一個是矩陣時(包括一維矩陣),dot便進行矩陣乘法運算,同時若有個參數為向量,會自動轉換為一維矩陣進行計算。
2.np.dot(x, y)中,x、y都是二維矩陣,進行矩陣積計算
例4:
import numpy as np
x=np.arange(0,6).reshape(2,3)
y=np.random.randint(0,10,size=(3,2))
print x
print y
print "x.shape:"+str(x.shape)
print "y.shape"+str(y.shape)
print np.dot(x,y)
輸出:
[[0 1 2]
?[3 4 5]]
[[7 5]
?[0 7]
?[6 2]]
x.shape:(2, 3)
y.shape(3, 2)
[[12 11]
?[51 53]]
注意:矩陣積計算不遵循交換律,np.dot(x,y)?和 np.dot(y,x)?得到的結果是不一樣的。
0行 0列的計算,x里面的元素是[0 1 2],y里面的元素是[7 0 6],計算結果是0×7+1×0+2×6=12
0行 1列的計算,x里面的元素是[0 1 2],y里面的元素是[5?7 2],計算結果是0×5+1×7+2×2=11
計算依次類推
————————————————
版權聲明:本文為CSDN博主「Liang_xj」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Liang_xj/article/details/85003467
總結
以上是生活随笔為你收集整理的np.dot()函数用法(亲测矩阵算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 改名字可以改多少次 改名字能改几次
- 下一篇: 币圈里的插针是什么意思