??我們在看python程序時,經(jīng)??梢钥吹紷運算符和*運算符,其中@運算符在傳統(tǒng)python中通常是作為裝飾器使用的。但是在Python 3.5之后,它又具備了矩陣乘法運算的功能。下面使用示例來對比這兩個運算符對矩陣運算的影響:
??導(dǎo)入用到numpy包:
import numpy as np
??創(chuàng)建一個維度為2×3×3的數(shù)組a,結(jié)果如下圖所示:
a=np.arange(1,10).reshape(3,3)
a=np.expand_dims(a,0).repeat(2,0)
print(a)
??再創(chuàng)建一個維度為2×3×3的數(shù)組b,結(jié)果如下圖所示:
b=np.eye(3)
b=np.expand_dims(b,0).repeat(2,0)
print(b)
??下面,我們執(zhí)行a*b
,可以看到,輸出為:
??這表明,運算符*在矩陣運算中的功能是逐元素的乘法(稱為Hadamard積(Hadamard product,數(shù)學(xué)符號⊙))。
??下面,我們執(zhí)行a@b
,可以看到,輸出為:
??這表明,運算符@在矩陣運算中的功能是矩陣乘法。也即,在矩陣乘法中,b矩陣右乘的作用是交換被乘矩陣的1、2兩列,結(jié)果即是。其實@運算符和numpy的matmul是一樣的,如下圖所示:文章來源:http://www.zghlxwxcb.cn/news/detail-520230.html
??只是當(dāng)引入了@運算符后,我們可以直接簡單使用@運算符來實現(xiàn)矩陣乘法了。還一點需要注意的是,在numpy的矩陣乘法中,默認(rèn)的乘法是不對第一個維度進(jìn)行操作的,這點也可以從上面的結(jié)果中看出(輸出結(jié)果的第一維都一樣)。文章來源地址http://www.zghlxwxcb.cn/news/detail-520230.html
到了這里,關(guān)于python中@運算符和*運算符在矩陣乘法中的區(qū)別與作用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!