函數(shù)主要功能有兩個(gè):向量點(diǎn)積和矩陣乘法秘噪。
格式:x.dot(y) 等價(jià)于 np.dot(x,y) ———x是m × n 矩陣 狮荔,y是n×m矩陣丝蹭,則x.dot(y) 得到m×m矩陣渤昌。
一恒傻、向量點(diǎn)積
如果處理的是一維數(shù)組,則得到的是兩數(shù)組的內(nèi)積畏纲。
例1:
import numpy as np
x=np.array([0,1,2,3,4])#等價(jià)于: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
二扇住、矩陣乘法
如果是二維數(shù)組(矩陣)之間的運(yùn)算,則得到的是矩陣積
1.np.dot(x, y), 當(dāng)x為二維矩陣盗胀,y為一維向量艘蹋,這時(shí)y會(huì)轉(zhuǎn)換一維矩陣進(jìn)行計(jì)算
首先,我們來看一下一維向量和一位矩陣的不同
例3:
import numpy as np
x=np.arange(0,5)
# 0,10票灰,是隨機(jī)數(shù)的方位女阀,size=(5,1),也就是5維矩陣宅荤,且每一維元素?cái)?shù)為1個(gè)
y=np.random.randint(0,10,size=(5,1))
print x
print y
# 查看矩陣或者數(shù)組的維數(shù)
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), 若兩個(gè)參數(shù)x和y中有一個(gè)是矩陣時(shí)(包括一維矩陣),dot便進(jìn)行矩陣乘法運(yùn)算浸策,同時(shí)若有個(gè)參數(shù)為向量冯键,會(huì)自動(dòng)轉(zhuǎn)換為一維矩陣進(jìn)行計(jì)算。
2.np.dot(x, y)中庸汗,x惫确、y都是二維矩陣,進(jìn)行矩陣積計(jì)算
np.dot(x, y)兩個(gè)二維矩陣滿足第一個(gè)矩陣的列數(shù)與第二個(gè)矩陣的行數(shù)相同蚯舱,那么可以進(jìn)行矩陣的乘法雕薪,即矩陣積
例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]]
注意:矩陣積計(jì)算不遵循交換律,np.dot(x,y) 和 np.dot(y,x) 得到的結(jié)果是不一樣的。
原文鏈接:https://blog.csdn.net/Liang_xj/article/details/85003467