對NumPy中dot()函數的理解


今天學習到numpy基本的運算方法,遇到了一個讓我比較難理解的問題。就是dot函數是如何對矩陣進行運算的。

一、dot()的使用

參考文檔:https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html

dot()返回的是兩個數組的點積(dot product)

1.如果處理的是一維數組,則得到的是兩數組的內積(順便去補一下數學知識)

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.如果是二維數組(矩陣)之間的運算,則得到的是矩陣積(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]])

所得到的數組中的每個元素為,第一個矩陣中與該元素行號相同的元素與第二個矩陣與該元素列號相同的元素,兩兩相乘后再求和。

這句話有點難理解,但是這句話里面沒有哪個字是多余的。結合下圖理解這句話。

3.dot()函數可以通過numpy庫調用,也可以由數組實例對象進行調用。a.dot(b) 與 np.dot(a,b)效果相同。

矩陣積計算不遵循交換律,np.dot(a,b) 和 np.dot(b,a) 得到的結果是不一樣的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM