一、np.linalg.norm
np.linalg.norm函數用於計算向量或矩陣的範數。範數是一種類似於長度的度量,是對向量的絕對大小的衡量。
其函數定義如下:
import numpy as np np.linalg.norm(x, ord=None, axis=None, keepdims=False)
其中x是我們要計算範數的向量或矩陣,ord是範數的類型,axis是指定哪一維計算範數,keepdims表示是否保留原始數組的維度。當ord=None時,np.linalg.norm計算的是向量的二範數,只需要傳入向量即可:
x = np.array([3,4]) print(np.linalg.norm(x)) #輸出: 5.0
當我們指定axis=1時,np.linalg.norm函數計算的是矩陣每一行的範數,返回一個行向量:
x = np.array([[9, 5], [3, 6]]) print(np.linalg.norm(x,axis=1,keepdims=True)) #輸出: [[9.48683298] # [6.70820393]]
當我們指定ord=1時,np.linalg.norm函數計算的是向量的一範數,即向量元素絕對值之和:
x = np.array([-3, 4, -5]) print(np.linalg.norm(x, ord=1)) #輸出:12.0
當我們指定ord=2時,np.linalg.norm函數計算的是向量的二範數。
二、np.linalg.solve函數
np.linalg.solve函數用於求解線性方程Ax=b,其中A是一個矩陣,b是一個向量。其函數定義如下:
import numpy as np np.linalg.solve(a, b)
其中a是一個矩陣,b是一個向量,函數返回一個向量x,使得Ax=b。
例如,我們有以下一個線性方程組:
3x + 4y = 5
2x – y = 7
我們可以用np.linalg.solve求解:
a = np.array([[3, 4], [2, -1]]) b = np.array([5, 7]) x = np.linalg.solve(a, b) print(x) #輸出:[-2. 3.]
三、np.linalg.eigh
np.linalg.eigh函數計算對稱矩陣的特徵值和特徵向量,其函數定義如下:
import numpy as np np.linalg.eigh(a, UPLO='L')
其中a是一個對稱矩陣,UPLO是一個字元串參數,用於指定計算上三角矩陣還是下三角矩陣的特徵值和特徵向量。
例如,我們有以下一個對稱矩陣:
1 2 3
2 2 3
3 3 4
我們可以用np.linalg.eigh求解該對稱矩陣的特徵值和特徵向量:
a = np.array([[1, 2, 3], [2, 2, 3], [3, 3, 4]]) eigenvalues, eigenvectors = np.linalg.eigh(a) print('eigenvalues:', eigenvalues) print('eigenvectors:', eigenvectors) #輸出: #eigenvalues: [-0.29501278 0.33291676 7.96209601] #eigenvectors: [[-0.57637179 -0.43728592 0.69025633] # [ 0.68628872 -0.18104944 0.70490795] # [-0.44019912 0.88044291 0.1767767 ]]
eigenvalues存儲特徵值,eigenvectors存儲特徵向量,可以發現輸出的特徵值是有序的,並且特徵向量也是經過排序的。
四、np.linalg.det
np.linalg.det函數計算方陣的行列式,其函數定義如下:
import numpy as np np.linalg.det(a)
其中a是一個方陣,函數返回該方陣的行列式。
例如,我們有以下一個方陣:
1 2
3 4
我們可以用np.linalg.det求解該方陣的行列式:
a = np.array([[1, 2], [3, 4]]) print(np.linalg.det(a)) #輸出:-2.0
其中行列式的值為-2.0。
五、np.linalg.inv(a)
np.linalg.inv函數計算矩陣的逆矩陣,即對於一個方陣A,函數返回一個矩陣B,滿足AB=BA=I,其中I是單位矩陣,其函數定義如下:
import numpy as np np.linalg.inv(a)
其中a是一個方陣,函數返回該方陣的逆矩陣。注意,只有方陣才有逆矩陣。
例如,我們有以下一個方陣:
1 2
3 4
我們可以用np.linalg.inv求解該方陣的逆矩陣:
a = np.array([[1, 2], [3, 4]]) b = np.linalg.inv(a) print(b) #輸出: #array([[-2. , 1. ], # [ 1.5, -0.5]])
我們可以驗證一下,AB=BA=I:
c = np.dot(a,b) d = np.dot(b,a) print(c) print(d) #輸出: #array([[1., 0.], # [0., 1.]]) #array([[1., 0.], # [0., 1.]])
可以發現,AB和BA都是單位矩陣。
六、np.linalg.eig
np.linalg.eig函數計算方陣的特徵值和特徵向量,其函數定義如下:
import numpy as np np.linalg.eig(a)
其中a是一個方陣,函數返回一個元組,第一個元素是特徵值的數組,第二個元素是特徵向量組成的數組。
例如,我們有以下一個方陣:
1 2 3
2 2 3
3 3 4
我們可以用np.linalg.eig求解該方陣的特徵值和特徵向量:
a = np.array([[1, 2, 3], [2, 2, 3], [3, 3, 4]]) w, v = np.linalg.eig(a) print('eigenvalues:', w) print('eigenvectors:', v) #輸出: #eigenvalues: [-0.29501278 0.33291676 7.96209601] #eigenvectors: [[-0.57637179 -0.43728592 0.69025633] # [ 0.68628872 -0.18104944 0.70490795] # [-0.44019912 0.88044291 0.1767767 ]]
可以發現輸出的特徵值是有序的,並且特徵向量也是經過排序的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153317.html