Numpy中np.dot與np.matmul的區(qū)別詳解
作用相同的情況
在若兩個array的維度均為兩維的情況下,兩個函數(shù)的結(jié)果是相同的,例如:
a = np.array([i for i in range(6)]).reshape([2,3]) b = np.array([i for i in range(6)]).reshape([3,2]) """ a [[0 1 2] [3 4 5]] b [[0 1] [2 3] [4 5]] """
>>> np.dot(a,b) array([[10, 13], [28, 40]]) >>> np.matmul(a,b) array([[10, 13], [28, 40]])
作用不同的情況
在三維的情況下,假設(shè)
a = np.array([i for i in range(12)]).reshape([2,2,3]) b = np.array([i for i in range(12)]).reshape([2,3,2]) """ a [[[ 0 ?1 ?2] ? [ 3 ?4 ?5]] ?[[ 6 ?7 ?8] ? [ 9 10 11]]] b [[[ 0 ?1] ? [ 2 ?3] ? [ 4 ?5]] ?[[ 6 ?7] ? [ 8 ?9] ? [10 11]]] """
>>> np.matmul(a,b) array([[[ 10, ?13], ? ? ? ? [ 28, ?40]], ? ? ? ?[[172, 193], ? ? ? ? [244, 274]]]) >>> np.matmul(a,b).shape (2, 2, 2)
這是因為matmul將最后兩維作為矩陣的兩維,相當(dāng)于有2個2 ∗ 2 2*22∗2的矩陣,因此通過對應(yīng)位置矩陣進(jìn)行矩陣乘法,會得到2個2 ∗ 2 2*22∗2的結(jié)果
>>> np.dot(a,b) array([[[[ 10, ?13], ? ? ? ? ?[ 28, ?31]], ? ? ? ? [[ 28, ?40], ? ? ? ? ?[100, 112]]], ? ? ? ?[[[ 46, ?67], ? ? ? ? ?[172, 193]], ? ? ? ? [[ 64, ?94], ? ? ? ? ?[244, 274]]]]) >>> np.dot(a,b).shape (2, 2, 2, 2)
可以看到其結(jié)果與matmul不同并且結(jié)果是四維的,這是因為dot將a數(shù)組的最后一維作為向量,并將b數(shù)組的倒數(shù)第二維作為了另一個向量,因此a中可以看成有2 ∗ 2 2*22∗2個向量,b中有2 ∗ 2 2*22∗2個向量,dot會將a的向量與b的向量全部組合在一起,因此會有( 2 ∗ 2 ) ∗ ( 2 ∗ 2 ) (2*2)*(2*2)(2∗2)∗(2∗2)種結(jié)果。
到此這篇關(guān)于Numpy中np.dot與np.matmul的區(qū)別詳解的文章就介紹到這了,更多相關(guān)Numpy np.dot與np.matmul內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python報錯:OSError:?[Errno?22]?Invalid?argument解決方案及應(yīng)用實例
最近跑別人的項目遇到一個這樣的問題一開始以為是沒有用管理員的權(quán)限運行,導(dǎo)致創(chuàng)建不了日志文件后來發(fā)現(xiàn)是和windows的命名規(guī)則沖突了,這篇文章主要給大家介紹了關(guān)于Python報錯:OSError:?[Errno?22]?Invalid?argument的解決方案及應(yīng)用實例,需要的朋友可以參考下2024-07-07在django中實現(xiàn)頁面倒數(shù)幾秒后自動跳轉(zhuǎn)的例子
今天小編就為大家分享一篇在django中實現(xiàn)頁面倒數(shù)幾秒后自動跳轉(zhuǎn)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python 3.x 判斷 dict 是否包含某鍵值的實例講解
今天小編就為大家分享一篇Python 3.x 判斷 dict 是否包含某鍵值的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Django如何繼承AbstractUser擴(kuò)展字段
這篇文章主要介紹了Django如何繼承AbstractUser擴(kuò)展字段,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11總結(jié)的幾個Python函數(shù)方法設(shè)計原則
這篇文章主要介紹了總結(jié)的幾個Python函數(shù)方法設(shè)計原則,本文講解了每個函數(shù)只做一件事、保持簡單、保持簡短、輸入使用參數(shù)、輸出使用return語句等內(nèi)容,需要的朋友可以參考下2015-06-06