scipy线性代数矩阵相关运算在他的linalg类中

(1)求方阵的行列式值det

A = np.array([[1,2],[3,4]])
print(linalg.det(A))

(2)求矩阵逆inv

B=linalg.inv(A)
print(B)

(3)求转职

print(A.T)

(4)求范数

这里先讲一下几类范数:

0范数:向量中的非0数

1范数:所有元素的绝对值之和

2范数:所有元素平方和 再开根号

无穷范数:所有元素的绝对值最大值

如何求呢?主要使用norm函数,传入不同的ord

B=np.array([1,2,3,4,0,0])
print(linalg.norm(B,ord=0))#非0 个数
print(linalg.norm(B,ord=1))#绝对值之和
print(linalg.norm(B,ord=2))#平方和开根号
print(linalg.norm(B,ord=np.inf))#绝对值最大值 无穷范数
print(linalg.norm(B))#默认2范数

(5)求特征值和特征向量eig

#特征值与特征向量
A = np.array([[1,2],[3,4]])
#特征值
print("特征值与特征向量")
print(linalg.eig(A))

输出为两个,第一个是特征值,第二个每一列是特征值对应特征向量

(6)求解线性方程组 solve

#线性方程组求解
#AX=B
#X=solve(A,B)
"""
1*x1 + 2*x2 + 3*x3 = 1
4*x1 + 9*x2 + 1*x3 = 1
27*x1 + 1*x2 + 8*x3 = 1
"""
a=np.array([[1,2,3],[4,9,1],[27,1,8]])
b=np.array([1,1,1])
x=linalg.solve(a,b)
print(x)

solve(a,b)a是未知数的系数,b是等号右边的常数构成的向量

(7)奇异值分解

#A=U*S*V.T
E=np.array([[0,1],[1,1],[1,0]])
u,s,vt=linalg.svd(E)
print('________________')
print(u,s,vt)

更多推荐