D = np.array([[1,2],[3,4]])
M = np.matrix(D)if np.linalg.det(M)!=0:print(np.linalg.inv(M))print(np.linalg.pinv(a=M, rcond=1e-15))# 广义逆矩阵(伪逆矩阵),rcond为误差值else:print("LinAlgError")
输出
[[-2.1.][1.5-0.5]][[-2.1.][1.5-0.5]]
6)矩阵乘积
a = np.ones(4).reshape(2,2)
b = np.array([[1,2],[3,4]])
c = np.dot(a, b)# 乘积,标量dot(10, 10)
d = np.inner(b, a)# 内积
e = np.matmul(a, b)# 乘积,不允许用标量print(c)print(d)print(e)
输出
[[4.6.][4.6.]][[3.3.][7.7.]][[4.6.][4.6.]]
7)求线性方程组:系数矩阵行列式不为0,线性方程组有唯一解
A = np.array([[1,-1,-1],[2,-1,-3],[3,2,-5]])# 系数矩阵
b =[2,1,0]# 常数项
x = np.linalg.solve(A, b)print(x)
输出
[5.00000000e+00-2.37904934e-163.00000000e+00]
8)求线性方程组的最小二乘解
A = np.array([[1,-1,-1],[2,-1,-3],[3,2,-5]])# 系数矩阵
b =[2,1,0]# 常数项
x1 = np.linalg.lstsq(a=A, b=b, rcond=None)[0]# rcond为a的最小奇异值的截距比print(x1)
输出
[5.0000000e+001.1481579e-153.0000000e+00]
3、向量、特征向量、特征值
1)向量的积
v1 = np.arange(3).reshape(1,3)print(v1)
v2 = np.ones(3).reshape(3,1)print(v2)
vo = np.outer(v2, v1)# 求向量外积,列 X 行print(vo)
vi = np.inner(v1, v1)# 求向量内积,vdot():支持复数print(vi)# vc = np.cross(a=v1, b=v2, axisa=-1, axisb=-1, axisc=-1, axis=None) # 向量的叉积