今天學習到numpy基本的運算方法,遇到了一個讓我比較難理解的問題。就是dot函數(shù)是如何對矩陣進行運算的。
一、dot()的使用
參考文檔:https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html
dot()返回的是兩個數(shù)組的點積(dot product)
1.如果處理的是一維數(shù)組,則得到的是兩數(shù)組的內(nèi)積(順便去補一下數(shù)學知識)
In : d = np.arange(0,9)Out: array([0, 1, 2, 3, 4, 5, 6, 7, 8])
In : e = d[::-1]Out: array([8, 7, 6, 5, 4, 3, 2, 1, 0])In : np.dot(d,e) Out: 84
2.如果是二維數(shù)組(矩陣)之間的運算,則得到的是矩陣積(mastrix product)。
In : a = np.arange(1,5).reshape(2,2)
Out:
array([[1, 2],
[3, 4]])
In : b = np.arange(5,9).reshape(2,2)
Out: array([[5, 6],
[7, 8]])
In : np.dot(a,b)
Out:
array([[19, 22],
[43, 50]])
所得到的數(shù)組中的每個元素為,第一個矩陣中與該元素行號相同的元素與第二個矩陣與該元素列號相同的元素,兩兩相乘后再求和。
這句話有點難理解,但是這句話里面沒有哪個字是多余的。結合下圖理解這句話。
3.dot()函數(shù)可以通過numpy庫調(diào)用,也可以由數(shù)組實例對象進行調(diào)用。a.dot(b) 與 np.dot(a,b)效果相同。
矩陣積計算不遵循交換律,np.dot(a,b) 和 np.dot(b,a) 得到的結果是不一樣的。