線性代數 (numpy.linalg
)#
NumPy 的線性代數函數依賴 BLAS 和 LAPACK,以提供標準線性代數演算法的高效率底層實作。這些函式庫可能由 NumPy 本身提供,使用其參考實作的 C 語言版本子集,但如果可能,最好使用高度最佳化的函式庫,這些函式庫能利用專門的處理器功能。此類函式庫的範例包括 OpenBLAS、MKL (TM) 和 ATLAS。由於這些函式庫是多執行緒且依賴處理器的,因此可能需要環境變數和外部套件(例如 threadpoolctl)來控制執行緒數量或指定處理器架構。
SciPy 函式庫也包含一個 linalg
子模組,且 SciPy 和 NumPy 子模組提供的功能有所重疊。SciPy 包含 numpy.linalg
中沒有的功能,例如與 LU 分解和 Schur 分解相關的函數、多種計算偽反矩陣的方法,以及矩陣超越函數(如矩陣對數)。在兩者中都存在的一些函數在 scipy.linalg
中具有增強的功能。例如,scipy.linalg.eig
可以接受第二個矩陣引數,以解決廣義特徵值問題。然而,NumPy 中的某些函數具有更彈性的廣播選項。例如,numpy.linalg.solve
可以處理「堆疊」陣列,而 scipy.linalg.solve
僅接受單一方陣作為其第一個引數。
注意
本頁面使用的矩陣一詞表示 2 維 numpy.array
物件,而非 numpy.matrix
物件。後者已不再推薦使用,即使是線性代數也是如此。有關更多資訊,請參閱矩陣物件文件。
@
運算子#
在 NumPy 1.10.0 中引入的 @
運算子在計算 2 維陣列之間的矩陣乘積時,比其他方法更為可取。numpy.matmul
函數實作了 @
運算子。
矩陣和向量乘積#
|
兩個陣列的點積。 |
|
在單一函數呼叫中計算兩個或多個陣列的點積,同時自動選擇最快的求值順序。 |
|
返回兩個向量的點積。 |
|
兩個陣列的向量點積。 |
|
計算向量點積。 |
|
兩個陣列的內積。 |
|
計算兩個向量的外積。 |
|
兩個陣列的矩陣乘積。 |
|
計算矩陣乘積。 |
|
兩個陣列的矩陣-向量點積。 |
|
兩個陣列的向量-矩陣點積。 |
|
沿指定軸計算張量點積。 |
|
沿指定軸計算張量點積。 |
|
對運算元評估愛因斯坦求和約定。 |
|
透過考量中間陣列的建立,評估 einsum 表達式的最低成本收縮順序。 |
|
將方陣提升到(整數)次方 n。 |
|
兩個陣列的 Kronecker 乘積。 |
|
返回 3 元素向量的叉積。 |
分解#
|
Cholesky 分解。 |
|
計算兩個向量的外積。 |
|
計算矩陣的 qr 分解。 |
|
奇異值分解。 |
|
返回矩陣(或矩陣堆疊) |
矩陣特徵值#
|
計算方陣的特徵值和右特徵向量。 |
|
返回複 Hermitian(共軛對稱)或實對稱矩陣的特徵值和特徵向量。 |
計算一般矩陣的特徵值。 |
|
|
計算複 Hermitian 或實對稱矩陣的特徵值。 |
範數和其他數字#
|
矩陣或向量範數。 |
|
計算矩陣(或矩陣堆疊) |
|
計算向量(或向量批次) |
|
計算矩陣的條件數。 |
|
計算陣列的行列式。 |
|
使用 SVD 方法返回陣列的矩陣秩 |
計算陣列行列式的符號和(自然)對數。 |
|
|
返回沿陣列對角線的總和。 |
|
返回矩陣(或矩陣堆疊) |
解方程式和反轉矩陣#
|
解線性矩陣方程式或線性純量方程式系統。 |
|
求解 x 的張量方程式 |
|
返回線性矩陣方程式的最小平方解。 |
|
計算矩陣的反矩陣。 |
|
計算矩陣的 (Moore-Penrose) 偽反矩陣。 |
|
計算 N 維陣列的「反矩陣」。 |
其他矩陣運算#
|
返回指定的對角線。 |
|
返回矩陣(或矩陣堆疊) |
|
轉置矩陣(或矩陣堆疊) |
例外#
linalg 函數引發的通用 Python 例外衍生物件。 |
一次對多個矩陣執行線性代數#
如果將上面列出的幾個線性代數常式堆疊到同一個陣列中,它們就能夠一次計算多個矩陣的結果。
這在文件中透過輸入參數規格來指示,例如 a : (..., M, M) array_like
。這表示,例如,如果給定輸入陣列 a.shape == (N, M, M)
,它會被解釋為 N 個矩陣的「堆疊」,每個矩陣的大小為 M 乘 M。類似的規格適用於傳回值,例如,行列式具有 det : (...)
,在這種情況下,將返回形狀為 det(a).shape == (N,)
的陣列。這可以推廣到對更高維度陣列執行線性代數運算:多維陣列的最後 1 個或 2 個維度會被解釋為向量或矩陣,適用於每個運算。