什么是NumPy?

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 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的标量解(scalar solutions),其中A是一个二维矩阵,而x是一维向量。 特征向量 实际上就是表示特征值的向量。

提示:

特征值和特征向量都是基本的数学概念,并且常用于一些重要的算法中,如 主成分分析(PCA) 算法。PCA可以极大地简化大规模数据集的分析过程。

用NumPy进行计算

计算特征值时,可以求助于numpy.linalg程序包提供的eigvals()子例程。函数eig()的返回值是一个元组,其元素为特征值和特征向量。

可以用子程序包numpy.linalg的eigvals()和eig()函数来获得矩阵的特征值和特征向量,并通过dot()函数(详见本书对应的eigenvalues.py文件)来验算结果。


import numpy as npA = np.mat("3 -2;1 0")print "A", Aprint "Eigenvalues", np.linalg.eigvals(A)eigenvalues, eigenvectors = np.linalg.eig(A)print "First tuple of eig", eigenvaluesprint "Second tuple of eig", eigenvectorsfor i in range(len(eigenvalues)):   print "Left", np.dot(A, eigenvectors[:,i])   print "Right", eigenvalues[i] * eigenvectors[:,i]   print

下面来计算一个矩阵的特征值。

1.创建矩阵。

下列代码将创建一个矩阵:


A = np.mat("3 -2;1 0")print "A", A

下面的矩阵即刚才创建的矩阵。


A[[ 3 -2] [ 1  0]] 

2.利用e``ig()函数计算特征值。

这时,我们可以使用eig()子例程:


print "Eigenvalues", np.linalg.eigvals(A)

该矩阵的特征值如下:


Eigenvalues [ 2.  1.] 

3.利用eig()``函数取得特征值和特征向量。

利用eig()函数,可以得到特征值和特征向量。注意,该函数返回的是一个元组,其第一个元素是特征值,第二个元素为相应的eigenvectors,其以面向列的方式 排列:


eigenvalues, eigenvectors = np.linalg.eig(A)print "First tuple of eig", eigenvaluesprint "Second tuple of eig", eigenvectors

特征值eigenvalues和特征向量eigenvectors的值为:


First tuple of eig [ 2.  1.]Second tuple of eig[[ 0.89442719  0.70710678] [ 0.4472136   0.70710678]] 

4.验算结果。

通过dot()函数计算特征值方程式Ax = ax两边的值,就可以对结果进行验算:


for i in range(len(eigenvalues)):   print "Left", np.dot(A, eigenvectors[:,i])   print "Right", eigenvalues[i] * eigenvectors[:,i]   print

输出内容如下所示:


Left [[ 1.78885438] [ 0.89442719]]Right [[ 1.78885438] [ 0.89442719]]Left [[ 0.70710678] [ 0.70710678]]Right [[ 0.70710678] [ 0.70710678]] 

想要更多Python学习数学,请点击。

c++向量和数组的区别_数学学习如此容易:用Python计算特征值和特征向量相关推荐

  1. c++向量和数组的区别_向量,矩阵和张量的导数 | 简单的数学

    前段时间看过一些矩阵求导的教程,在看过的资料中,尤其喜欢斯坦福大学CS231n卷积神经网络课程中提到的Erik这篇文章.循着他的思路,可以逐步将复杂的求导过程简化.再简化,直到发现其中有规律的部分.话 ...

  2. 一维数组和二维数组的区别_数组指针和指针数组的区别

    数组指针和指针数组的区别 - hongcha_717 - 博客园​www.cnblogs.com 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整 ...

  3. c++向量和数组的区别_Matlab入门基础知识(5)对数组的操作

    上篇推文,数模君简单介绍了对数组中元素操作的方法.那么对于数组这个整体,我们在MATLAB中可以怎么对其进行操作呢?今天数模君向大家介绍一下,MATLAB中对数组进行操作的常用函数:size函数.le ...

  4. python原理_强化学习:原理与Python实现

    强化学习:原理与Python实现 作者:肖智清 著 出版日期:2019年08月 文件大小:17.18M 支持设备: ¥60.00 适用客户端: 言商书局 iPad/iPhone客户端:下载 Andro ...

  5. python中 和 的区别_举例子让你明白python中is和==的区别

    在说 is 和 == 的区别之前,我们先理解下python的变量.python的变量和java的变量有很大的区别,因为一个是动态语言,另一个是静态语言. java的变量就像是个盒子,是把对象的地址装进 ...

  6. pandas python2.3版本_应该学习最新版本的 Python 3 还是旧版本的 Python 2?

    应该学习最新版本的 Python 3 还是旧版本的 Python 2? 看到最新Python版本是3.4,但是网上的资料,包括出版的书籍,都是最晚到13年左右,很多细节都不同,语法也过时了. 那此时应 ...

  7. 数学建模 层次分析法 python计算权重

    这里用python语言来计算判断矩阵的权重,网上大部分是matlab语言,里面也包含一致性检验的函数,具体各函数使用方法详见代码注释的部分 import numpy as np a=np.array( ...

  8. python递归算法案例教案_电子教案 第8章 Python计算生态

    全国计算机等级考试二级教程全国计算机等级考试二级教程 Python语言程序设计语言程序设计 (2020年版) 知识兔w w w . z h is h it u . c o m [第[第8章]章] Py ...

  9. c++向量和数组的区别_Spark机器学习-Java版(一)-向量和矩阵

    1.概述 Spark早期版本时,MLlib是基于RDD来进行分析的,其使用的是 spark. mllib包.而言2.0版本后,由RDD这种抽象数据结构转换到了基于 dataframe上,其相关API也 ...

最新文章

  1. java线程——join
  2. [转]为什么Java中的HashMap默认加载因子是0.75
  3. AttributeError: ‘Model‘ object has no attribute ‘_get_distribution_strategy
  4. centos 对已有卷扩容_CentOS LVM 新加硬盘,扩容逻辑卷步骤
  5. 年度布道师颁奖|盘点2020年网易智企的布道先锋们
  6. 深入理解MSTP域和端口角色
  7. Ubuntu下的提示信息彩色显示
  8. 删除选修c语言课程的女生成绩记录,pta10-1 查询没有选修‘C语言‘课程的学生 (10分)...
  9. 【英语学习】【Level 07】U05 Best Destination L2 The City of Lights
  10. Leetcode每日一题:1122.relative-sort-array(数组的相对排序)
  11. @echo off 与@echo on
  12. Unity编辑器控件的使用(—)
  13. 下载苹果官网视频的方式
  14. 谷粒商城-基础篇-环境搭建(P1-P44)
  15. 《华盛顿邮报》评选的完整电影清单(包括上映时期和豆瓣评分)
  16. BZOJ 3709: [PA2014]Bohater 贪心
  17. iOS 苹果授权登录(Sign in with Apple)
  18. 阶梯电价C语言PTA
  19. 单因子有效性分析-因子收益率分析
  20. Android应用.三星i9000系列(2).工程代码,网络锁与锁三键

热门文章

  1. 砂.随笔.三十二.Together forever and ever
  2. IDEA解决SSM项目的静态资源路径问题:HTML,CSS,JS--详解
  3. 完美解决MySQL重装问题
  4. IntelliJ-将Java项目/模块转换为Maven项目/模块
  5. 在不锁定表的情况下运行MySQLDump
  6. 如何有效地连接字符串
  7. 如何检查文件是否存在无例外?
  8. 苹果发布会体现出的未来趋势
  9. tensorflow inceptionv3参数笔记
  10. php代码生成txt文件并下载