Python最全numpy的線性代數函數功能及用法
Python系列
- 作爲初學者,自己整理的numpy線性代數函數用法與功能,與大家分享!有幫助到您的,希望點個贊再走唄!整理不易,一起學習,共同進步啊~~
- 若有錯誤的地方歡迎留言指正!!
numpy的線性代數函數
import numpy as np # 先導入numpy模塊
(1)diag
功能:形成一個以一維數組爲對角線元素的矩陣或輸出矩陣的對角線元素
用法:np.diag(a)
例:
a = [1,2,3] # 一維數組
np.diag(a)
Out:array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]]) # 輸出以a爲對角線元素的矩陣(方陣)
b = ([1,2,3],[4,5,6],[7,8,9]) # 多維數組
np.diag(b)
Out:array([1, 5, 9]) # 輸出矩陣b的對角線元素
(2)dot
功能:計算矩陣的乘法(兩個數組的內積/點積)
用法:np.dot(a,b)
例:
a = ([1,2],[3,4])
b = ([5,6],[7,8])
np.dot(a,b)
Out:array([[19, 22],
[43, 50]])
(3)trace
功能:計算矩陣的跡(對角線元素的和)
用法:np.trace(a)
例:
a = ([1,2,3],[4,5,6],[7,8,9])
np.trace(a)
Out:15
(4)det
功能:計算矩陣(方陣)的行列式值
用法:np.linalg.det(a)
例:
a = ([1,2],[3,4])
np.linalg.det(a)
Out:-2
(5)eig
功能:計算方陣的特徵值和特徵向量
用法:np.linalg.eig(a)
例:
a = ([1,2],[3,4])
e,v = np.linalg.eig(a)
In:e
Out: array([-0.37228132, 5.37228132]) # 特徵值
In:v
Out: array([[-0.82456484, -0.41597356],
[ 0.56576746, -0.90937671]]) # 特徵向量
(6)inv
功能:計算矩陣的逆矩陣
用法:np.linalg.inv(a)
例:
a = ([1,2],[3,4])
np.linalg.inv(a)
Out:array([[-2. , 1. ],
[ 1.5, -0.5]])
(7)qr
功能:QR分解(正交分解)
用法:np.linalg.qr(a)
例:
a = ([1,2],[3,4])
q,r = np.linalg.qr(a)
In:q
Out:array([[-0.31622777, -0.9486833 ],
[-0.9486833 , 0.31622777]])
In:r
Out:array([[-3.16227766, -4.42718872],
[ 0. , -0.63245553]])
(8)svd
功能:SVD分解(奇異值分解)
用法:np.linalg.svd(a,full_matrices=1,compute_uv=1)
例:
a = ([1,2],[3,4])
u,s,v = np.linalg.svd(a)
In:u
Out:array([[-0.40455358, -0.9145143 ],
[-0.9145143 , 0.40455358]])
In:s
Out:array([5.4649857 , 0.36596619])
In:v
Out:array([[-0.57604844, -0.81741556],
[ 0.81741556, -0.57604844]])
(9)solve
功能:解形如AX=B的線性矩陣方程(計算A^(-1)B的解)
用法:np.linalg.solve(a,b)
例:
a = [[1,1,1],[ 0,2,5],[ 2,5,-1]]
b = [[6],[-4],[27]]
np.linalg.solve(a,b)
Out:array([[ 5.],
[ 3.],
[-2.]])
(10)lstsq
功能:估計線性模型中的係數(最小二乘解,求b=a*x中的a)
用法:np.linalg.lstsq(x,b)
例:
x = ([1,2],[3,4],[5,6],[7,8])
b = [-1,0.2,0.9,2.1]
np.linalg.lstsq(x,b)
Out:(array([ 1.95, -1.45]),
array([0.05]),
2,
array([14.2690955 , 0.62682823]))