对JDA程序的一些帮助理解
1、线性计算与矩阵分解scipy.linalg
w, v = scipy.linalg.eig(a, b)
w为特征值,v为特征向量
其中的linalg.eig(a,b)作用为计算矩阵特征向量
导入模块
import numpy as np #导入numpy库
from scipy import linalg as lg #导入scipy库的linalg模块
arr=np.array([[1,2],[3,4]]) #创建方阵arr
b=np.array([6,14]) #创建矩阵b
scipy.linalg.eig():计算方阵的特征向量
w, v = scipy.linalg.eig(a, b)
scipy.linalg.svd():对矩阵进行奇异值分解
print('SVD:',lg.svd(arr)) #对矩阵arr进行svd分解
scipy.linalg.lu():对矩阵进行LU分解
print('LU:',lg.lu(arr)) #对矩阵arr进行lu分解
scipy.linalg.solve():方程组求解
print('Sol:',lg.solve(arr,b)) #求方程组arr*x=b的解
scipy.linalg.inv():计算方阵的逆矩阵、行列式
print('Inv:',lg.inv(arr)) #求矩阵arr的逆矩阵
print('Det:',lg.det(arr)) #求矩阵arr的行列式
2、numpy中argsort()函数的用法
ind = np.argsort(w)
例如:
1 import numpy as np
2 x=np.array([1,4,3,-1,6,9])
>>>x.argsort()
输出:
y=array([3,0,2,1,4,5])
argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。
3、numpy中的flatten和ravel函数使用
x=np.array([[1,2],[3,4]])
flatten函数和ravel函数在降维时默认是行序优先
x.flatten()
array([1, 2, 3, 4])
x.ravel()
array([1, 2, 3, 4])
传入’F’参数表示列序优先
x.flatten('F')
array([1, 3, 2, 4])
x.ravel('F')
array([1, 3, 2, 4])
# reshape函数当参数只有一个-1时表示将数组降为一维
x.reshape(-1)
array([1, 2, 3, 4])
# x.T表示x的转置
x.T.reshape(-1)
array([1, 3, 2, 4])