目录
说明:纯手敲,总结的是学校发的教材上的知识(参考教材所写,为了个人学习的方便),如侵权,请联系删除,如有错误,请私信我,谢谢!
线性代数
1. 数组相乘
@ dot() 函数
-
计算矩阵乘积
np.dot(a,b)
-
import numpy as np a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) b = np.dot(a,b) print(b) ''' 输出: [[19 22] [43 50]] '''
@ vdot() 函数
-
俩个向量的点积
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
b = np.vdot(a,b) # 1*3+2*4+5*7+6*8
print(b) # 70
2. 矩阵行列式
-
np.linalg.det(a)
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.linalg.det(a)
print(b) # -2.0000000000000004
3. 逆矩阵
-
np.linalg.inv(a)
import numpy as np
a = np.array([[1,2],[3,4]])
b = np.linalg.inv(a)
print(b)
'''
输出:
[[-2. 1. ]
[ 1.5 -0.5]]
'''
4. 线性方程组
-
np.linalg.solve(A,b)
-
矩阵必须是方阵且可逆,否则会抛出
LinAlgError
异常。
'''
x+y+z=6
2y+5z=-4
2x+5y=27
'''
import numpy as np
A = np.mat("1 1 1;0 2 5;2 5 -1")
# 3*3的矩阵 【可py测试一下】
b = np.array([6,-4,27])
x = np.linalg.solve(A,b)
print(x)
print(x.ndim) # 解的个数?? ---- 维度
print(np.dot(A,x)) # 验证看是否等于 b
-
可借鉴:(无数解情况,高斯消元)用Python实现高斯消去法求解线性方程组,python,元法,的 (pythonf.cn)
5. 特征值和特征向量
-
特征值:
np.linalg.eigvals()
-
特征值+特征向量:
np.linalg.eig()
返回一个元组
import numpy as np
A = np.mat("1 -1;2 4")
e = np.linalg.eigvals(A) # 特征值
x,y = np.linalg.eig(A) # x=特征值 y=特征向量
print(e)
print(x)
print(y)
# 原矩阵为:
d = y*np.diag(e)*np.linalg.inv(y)
print(d)
'''
输出:
[2. 3.]
[2. 3.]
[[-0.70710678 0.4472136 ]
[ 0.70710678 -0.89442719]]
[[ 1. -1.]
[ 2. 4.]]
'''