一、线性代数模块(linalg)
1、矩阵的逆
矩阵的逆:inv()该逆矩阵的前提必须是方阵
numpy.linalg.inv(A)
import numpy as np
# 创建一个矩阵
A = np.mat('1 2 3; 5 6 7; 9 8 5')
print(A)
# 用linalg下的inv求A的逆矩阵
B = np.linalg.inv(A)
print(B)
# 验证是否是逆矩阵
C = A * B # numpy中的运算符号与python相通
print(C)
2、矩阵的线性解
解线性(一次)方程组:solve()或lstsq()
numpy.linalg.solve(A, B)或numpy.linalg.lstsq(A, B)[0]
import numpy as np
A = np.mat('1 -2 1; 0 2 -8; -4 5 9') # 初始矩阵(3x3)
B = np.mat('0; 8; -9') # 列向量
X1 = np.linalg.solve(A, B)
X2 = np.linalg.lstsq(A, B)[0]
print(X1, '\n', X2)
3、特征值与特征向量
定义: 对于n阶方阵A,如果存在数a和非零n维向量x,使得Ax=ax,则称a是矩阵A的一个特征值,x则是矩阵A特征值a的特征向量(不唯一)
两个都取: numpy.linalg.eig(A)
只取特征值: numpy.linalg.eigvals(A)
import numpy as np
A = np.mat('3 -2; 1 0')
eigvals, eigvecs = np.linalg.eig(A) # 用两个对象来接收特征值和特征向量
print(eigvals) # 特征值
print(eigvecs) # 特征向量
# 证明特征值正确:Ax=ax
print(A * eigvecs[: