学习笔记,这个笔记以例子为主。
开发工具:Spyder


文章目录

  • 特征值和特征向量
    • 案例(求矩阵特征值和特征向量)
  • 奇异值分解
    • 举个例子1(不设置参数full_matrices = False)
    • 举个例子2(设置参数full_matrices = False, 即不要求V为一个方阵)

特征值和特征向量

对于n阶方阵A,如果存在数a和非零n维列向量x,使得Ax=ax,则称a是矩阵A的一个特征值,x是矩阵A属于特征值a的特征向量.

  • 语法
#已知n阶方阵A, 求特征值与特征数组
eigvals, eigvecs = np.linalg.eig(A)
# eigvals: 特征值数组
# eigvecs: 特征向量数组 #已知特征值与特征向量,求原始方阵A
S = np.mat(eigvecs) * np.mat(np.diag(eigvals)) * np.mat(eigvecs).I

备注:np.diag(一维数组),表示将这个一维数组作为对角元素,组成矩阵。

案例(求矩阵特征值和特征向量)

代码:

import numpy as npA = np.mat('1 3 5;2 1 6;1 1 2')
print(A)#提取特征值和特征向量
eigvals, eigvecs = np.linalg.eig(A)
print(eigvals, '--eigvals')
print(eigvecs, '--eigvecs')#逆向推导原矩阵
print(np.mat(eigvecs) * \np.mat(np.diag(eigvals)) * np.mat(eigvecs).I)

结果:

[[1 3 5][2 1 6][1 1 2]]
[-1.14005494  6.14005494 -1.        ] --eigvals
[[-0.91698775  0.69142632 -0.94280904][ 0.35680076  0.64617623  0.23570226][ 0.17840038  0.32308811  0.23570226]] --eigvecs
[[ 1.  3.  5.][ 2.  1.  6.][ 1.  1.  2.]]

奇异值分解

有一个矩阵M,可以分解为3个矩阵U、S、V,使得U x S x V等于M。U与V都是正交矩阵(乘以自身的转置矩阵结果为单位矩阵)。S矩阵主对角线上的元素称为矩阵M的奇异值,其它元素均为0。

相关函数:

U, sv, V = np.linalg.svd(M, full_matrices=False)
#sv是奇异值

举个例子1(不设置参数full_matrices = False)

我们对矩阵[4, 11, 14; 8, 7, -2]进行奇异值分解。

代码:

结果:

在进行逆向回推原矩阵时,因为此时若对sv作为对角元素,构建对角矩阵,则会构建出22的矩阵,则U为22阶,V为3*3阶,他们不能做矩阵相乘运算,否则会报错:

为了解决这个问题,我们再举个例子。

举个例子2(设置参数full_matrices = False, 即不要求V为一个方阵)

我们再对矩阵[4, 11, 14; 8, 7, -2]进行奇异值分解。

代码:

结果:


逆向回推原矩阵:

结果:

numpy基础(part11)--特征值与奇异值分解相关推荐

  1. python输入数组并计算_利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  2. 数据分析之numpy基础/matplotlib绘图/numpy常用函数/杂项功能

    文章目录 数据分析 numpy概述 numpy`历史` numpy的核心:多维数组 numpy基础 ndarray数组 内存中的ndarray对象 ndarray数组对象的特点 ndarray数组对象 ...

  3. Python数据分析入门--Numpy基础学习笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 NumPy基础 1.NumPy nadarray:多维数组对象 1.1ndarray及其数据类型 1.2NumPy数组 ...

  4. 【Python】Numpy基础:数组和矢量运算

    Numpy基础:数组和矢量运算 目录: 文章目录 一 Numpy及其重要性 二 ndarray:一种多维数组对象 1 创建ndarray 2 ndarray的数据类型 3 数组和标量之间的运算 4 基 ...

  5. python二维向量运算模拟_【转载 Python】Numpy基础:数组和矢量运算

    Numpy基础:数组和矢量运算 目录: 尊重原创,转载出处:https://blog.csdn.net/sunyaowu315/article/details/82733249?utm_medium= ...

  6. Python精讲Numpy基础,大牛笔记详细解释

    https://www.toutiao.com/a6664936105076326920/ 总认为Numpy是渣渣,直到深入接触以后才知道功能这么强大.堪比Matlab啊.果然是人生苦短,我用Pyth ...

  7. python之numpy基础_Python知识普及:Numpy基础操作

    原标题:Python知识普及:Numpy基础操作 Numpy基础数据结构 创建数组 Numpy通用函数 import numpy as np # reshape 改变数组维度形状 ar1 = np.a ...

  8. Python 数据分析与展示笔记1 -- Numpy 基础

    Python 数据分析与展示笔记1 – NumPy 基础 Python 数据分析与展示系列笔记是笔者学习.实践Python 数据分析与展示的相关笔记 课程链接: Python 数据分析与展示 参考文档 ...

  9. numpy 随机数_数据分析numpy基础看着一篇就够了

    1,Numpy基础数据结构 2,Numpy通用函数 3,Numpy索引及切片 4,Numpy随机数 5,Numpy数据的输入输出 1,Numpy基础数据结构 NumPy数组是一个多维数组对象,称为nd ...

最新文章

  1. maven插件的使用
  2. 杨老师课堂之JavaScript定时器限时抢购秒杀商品案例
  3. php类实例方法静态方法,PHP类中的静态方法使用实例
  4. rocketmq基本安装与使用(一)
  5. SQL Server加密存储过程的破解
  6. WriteFile写磁盘扇区是87错误的原因
  7. bzoj 3675: [Apio2014]序列分割
  8. JulyNovel-React
  9. python用pip安装wordcloud_如何在python3.7中使用pip安装wordcloud
  10. Hadoop核心组件之HDFS,MapReduce,YARN概述
  11. 学习爬虫过程中遇到的问题总结
  12. TextView滚动功能的实现
  13. CSS border-style属性
  14. noip模拟赛 寻宝之后
  15. 单片机如何产生PWM信号
  16. Linux安装nginx做端口映射
  17. unity素材三:未来城市场景
  18. 如何把用Word文档转换成PNG图片
  19. 用System中System.setOut()方法修改输出方式
  20. [LOJ 5516]无聊的数对

热门文章

  1. mysql 排序_MySql的几种排序方式
  2. java 制作小游戏_如何用java制作小游戏
  3. AOP概述及实现原理
  4. SpringCloud之路由网关zuul(五)
  5. Nginx + Tomcat 配置负载均衡集群
  6. GNU make manual 翻译( 一百七十五)
  7. ​Linux下C如何调用PCI Lib函数
  8. SylixOS下基于NUC970的NAND驱动
  9. Android接入百度自动更新SDK
  10. 使用tesseract-ocr破解网站验证码