Python中什么是詳解矩陣乘法?
今天大家一起了解一下Python中什么是詳解矩陣乘法!python 矩陣有兩種形式:array 和 matrix 對象(它們的區別在這里就不說了),下面介紹相關乘法
1. np.multiply
對 array 和 matrix 對象的操作相同
(1) a 和 b 維度相同
都是每行對應元素相乘(即對應內積的第一步,不求和)
>>> a = np.array([[1,2],[1,2]])
>>> a*a
>>> array([[1, 4],
[1, 4]])
(2)對于兩個矩陣元素 a 和 b 維度不一的情況(array 和 matrix 對象都適用),則需將相應的行和列進行擴充,需要擴充的行或列的維度必須為 1。
對列擴充則補 1, 對行擴充則將第一行復制到每一行。比如,a:3 * 1, b: 1 * 2,則 a 擴充為 3 * 2,b 擴充為 3 * 2。
如下所示:
>>> a = np.array([[1],[1],[1]])
>>> b = np.array([1,2])
>>> np.multiply(a, b)
>>> array([[1, 2],
[1, 2],
[1, 2]])
(3)a 和 b為標量:則標量直接相乘
2. *
(1)對于 matrix 對象,代表矩陣乘法(維度必須滿足相應規則);
(2)對于array對象,則是每行對應元素相乘。當 array 對象的 shape 不同時(matrix 對象不行) ,其規則和 p.multiply 一樣;
3. np.matmul
該函數對 array 和 matrix 對象的操作是不一樣的。
(1)對于 matrix 對象,對應矩陣乘法,對象維度必須滿足矩陣乘法規則。
(2)對于 array 對象,對應內積,但對象維度必須相同,不支持維度擴展。
(3)不支持標量運算。
在array 中,與 multiply 一樣,每行對應元素相乘
4. np.dot
對于matrix 對象,對應矩陣乘法。
對于兩個 array 類型的元素:a,b,有如下可能:
(1)a 和 b 都是一維 array,那么 dot 就是它們的內積(點乘);
(2)a 和 b 都是二維 array,那么 dot 就是它們的矩陣乘積(即按矩陣乘法規則來計算),也可以用 matmul 或 a @ b;
(3)如果a 和 b 都是標量(scalar),那么 dot 就是兩個數的乘積,也可以用 multiply 或 a * b;
(4)若 a:N * D,b:1 * D,那么 dot 為 a 的每一行和 b (只有一行)的 內積;
>>>a = np.array([[1,2], [3, 4]])
>>>b = np.array([1, 2])
>>>np.dot(a, b)
>>>array([ 5, 11])
好啦!今天的分享到這里就結束了,希望大家能夠持續關注馬哥教育官網,每天都會有大量優質內容與大家分享歐!版權聲明:轉載文章來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯系刪除或授權事宜。