什么是NumPy?
NumPy(NumericalPython)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy的前身Numeric最早是由JimHugunin与其它协作者共同开发,年,TravisOliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其它扩展而开发了NumPy。NumPy为开放源代码并且由许多协作者共同维护开发。
NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:
一个强大的N维数组对象ndarray广播功能函数整合C/C++/Fortran代码的工具线性代数、傅里叶变换、随机数生成等功能特征值和特征向量的定义
设A是n阶方阵,如果数λ和n维非零列向量x使关系式Ax=λx成立,那么这样的数λ称为矩阵A特征值,非零向量x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成(A-λE)X=0。这是n个未知数n个方程的齐次线性方程组,它有非零解的充分必要条件是系数行列式
A-λE
=0。
特征值是方程式Ax=ax的标量解(scalarsolutions),其中A是一个二维矩阵,而x是一维向量。特征向量实际上就是表示特征值的向量。
提示:
特征值和特征向量都是基本的数学概念,并且常用于一些重要的算法中,如主成分分析(PCA)算法。PCA可以极大地简化大规模数据集的分析过程。
用NumPy进行计算
计算特征值时,可以求助于numpy.linalg程序包提供的eigvals()子例程。函数eig()的返回值是一个元组,其元素为特征值和特征向量。
可以用子程序包numpy.linalg的eigvals()和eig()函数来获得矩阵的特征值和特征向量,并通过dot()函数(详见本书对应的eigenvalues.py文件)来验算结果。
importnumpyasnpA=np.mat(3-2;10)printA\n,AprintEigenvalues,np.linalg.eigvals(A)eigenvalues,eigenvectors=np.linalg.eig(A)printFirsttupleofeig,eigenvaluesprintSecondtupleofeig\n,eigenvectorsforiinrange(len(eigenvalues)):printLeft,np.dot(A,eigenvectors[:,i]) printRight,eigenvalues[i]*eigenvectors[:,i] print下面来计算一个矩阵的特征值。
1.创建矩阵。
下列代码将创建一个矩阵:
A=np.mat(3-2;10)printA\n,A下面的矩阵即刚才创建的矩阵。
preclass=代码无行号codestrongA[[3-2][1 0]]/strong/code/pre2.利用e``ig()函数计算特征值。
这时,我们可以使用eig()子例程:
printEigenvalues,np.linalg.eigvals(A)该矩阵的特征值如下:
Eigenvalues[2. 1.]3.利用eig()``函数取得特征值和特征向量。
利用eig()函数,可以得到特征值和特征向量。注意,该函数返回的是一个元组,其第一个元素是特征值,第二个元素为相应的eigenvectors,其以面向列的方式排列:
eigenvalues,eigenvectors=np.linalg.eig(A)printFirsttupleofeig,eigenvaluesprintSecondtupleofeig\n,eigenvectors特征值eigenvalues和特征向量eigenvectors的值为:
Firsttupleofeig[2. 1.]Secondtupleofeig[[0. 0.][0. 0.]]4.验算结果。
通过dot()函数计算特征值方程式Ax=ax两边的值,就可以对结果进行验算:
foriinrange(len(eigenvalues)):printLeft,np.dot(A,eigenvectors[:,i]) printRight,eigenvalues[i]*eigenvectors[:,i] print输出内容如下所示:
Left[[1.][0.]]Right[[1.][0.]]Left[[0.][0.]]Right[[0.][0.]]
PythonMatlab机器学习深度学习视频/神经网络算法淘宝¥30购买已下架