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]))