python 矩陣乘法的幾種實現(xiàn)方法
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 對象,代表矩陣乘法(維度必須滿足相應規(guī)則);
(2)對于array對象,則是每行對應元素相乘。當 array 對象的 shape 不同時(matrix 對象不行) ,其規(guī)則和 np.multiply 一樣;
3. np.matmul
該函數(shù)對 array 和 matrix 對象的操作是不一樣的。
(1)對于 matrix 對象,對應矩陣乘法,對象維度必須滿足矩陣乘法規(guī)則。
(2)對于 array 對象,對應內積,但對象維度必須相同,不支持維度擴展。
(3)不支持標量運算。
在array 中,與 multiply 一樣,每行對應元素相乘
4. np.dot
對于matrix 對象,對應矩陣乘法。
對于兩個 array 類型的元素:a,b,有如下可能:
(1)a 和 b 都是一維 array,那么 dot 就是它們的內積(點乘);
(2)a 和 b 都是二維 array,那么 dot 就是它們的矩陣乘積(即按矩陣乘法規(guī)則來計算),也可以用 matmul 或 a @ b;
(3)如果a 和 b 都是標量(scalar),那么 dot 就是兩個數(shù)的乘積,也可以用 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])
到此這篇關于python 矩陣乘法的幾種實現(xiàn)方法的文章就介紹到這了,更多相關python 矩陣乘法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python使用Streamlit快速構建一個數(shù)據(jù)應用程序
Streamlit是一個開源的Python庫,它允許數(shù)據(jù)科學家和開發(fā)人員快速創(chuàng)建和分享數(shù)據(jù)應用程序,而無需具備復雜的Web開發(fā)經(jīng)驗,本文將介紹Streamlit的基本用法,并通過一個實際案例展示如何快速構建一個簡單的數(shù)據(jù)應用程序,需要的朋友可以參考下2025-03-03
使用Python制作一個數(shù)據(jù)預處理小工具(多種操作一鍵完成)
這篇文章主要介紹了使用Python制作一個數(shù)據(jù)預處理小工具(多種操作一鍵完成),本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
利用Python實現(xiàn)Windows下的鼠標鍵盤模擬的實例代碼
本篇文章主要介紹了利用Python實現(xiàn)Windows下的鼠標鍵盤模擬的實例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07

