numpy奇异值分解,广义逆矩阵与行列式

SVD

是一种因子分解运算, 将一个矩阵分解为3个矩阵的乘积

其中, 奇异值矩阵是对角线矩阵

Key_Function

np.linalg.svd函数, 可以对矩阵进行奇异值分解.

  U: 正交矩阵

  sigma: 表示奇异值矩阵对角线的数组, 其他非对角线元素均为0

  V: 正交矩阵

np.diag函数, 得出完整的奇异值矩阵

Code

import numpy as np

A = np.mat("4 11 14; 8 7 -2")
print(A)
‘‘‘
[[ 4 11 14]
 [ 8  7 -2]]
‘‘‘

U, Sigma, V = np.linalg.svd(A, full_matrices=False)
print(U)
‘‘‘
[[-0.9486833  -0.31622777]
 [-0.31622777  0.9486833 ]]
‘‘‘
print(Sigma)    # 这个Sigma只是奇异值矩阵对角线上的值
‘‘‘
[ 18.97366596   9.48683298]
‘‘‘
print(np.diag(Sigma))
‘‘‘
[[ 18.97366596   0.        ]
 [  0.           9.48683298]]
‘‘‘
print(V)
‘‘‘
[[-0.33333333 -0.66666667 -0.66666667]
 [ 0.66666667  0.33333333 -0.66666667]]
‘‘‘

print(U * np.diag(Sigma) * V)
‘‘‘
[[  4.  11.  14.]
 [  8.   7.  -2.]]
‘‘‘

广义逆矩阵

Key_Function

np.linalg.pinv函数

np.inv函数

Code

import numpy as np

A = np.mat("4 11 14; 8 7 -2")
print(A)
‘‘‘
[[ 4 11 14]
 [ 8  7 -2]]
‘‘‘

pseudoinv = np.linalg.pinv(A)
print(pseudoinv)
‘‘‘
[[-0.00555556  0.07222222]
 [ 0.02222222  0.04444444]
 [ 0.05555556 -0.05555556]]
‘‘‘

print(A * pseudoinv)
‘‘‘十分接近单位矩阵
[[  1.00000000e+00   0.00000000e+00]
 [  8.32667268e-17   1.00000000e+00]]
‘‘‘

数学概念

广义逆矩阵的定义

或者

广义逆矩阵的求解

行列式

Key_Function

np.linalg.det函数, 计算矩阵的行列式

Code

import numpy as np

A = np.mat("3 4; 5 6")
print(A)
‘‘‘
[[3 4]
 [5 6]]
‘‘‘

print(np.linalg.det(A))
# -2.0

原文地址:https://www.cnblogs.com/draven123/p/11410045.html

时间: 2024-10-10 10:14:56

numpy奇异值分解,广义逆矩阵与行列式的相关文章

numpy linalg模块

# 线性代数# numpy.linalg模块包含线性代数的函数.使用这个模块,可以计算逆矩阵.求特征值.解线性方程组以及求解行列式等. import numpy as np # 1. 计算逆矩阵# 创建矩阵A = np.mat("0 1 2;1 0 3;4 -3 8")print (A)#[[ 0 1 2]# [ 1 0 3]# [ 4 -3 8]] # 使用inv函数计算逆矩阵inv = np.linalg.inv(A)print (inv)#[[-4.5 7. -1.5]# [-2

数据分析基础教程Numpy指南笔记

Numpy指南笔记 第2章:Numpy基础 创建多维数组# coding:utf-8import numpy as npm=np.array([np.arange(2),np.arange(2)])print mprint m.shape 一维数组切片和索引# coding:utf-8import numpy as npa=np.arange(9)print aprint a[3:7]print a[:7:2] #用下标0-7,以2为步长选取元素 多维数组切片和索引# coding:utf-8i

numpy基本方法

在学习python的时候常常需要numpy这个库,每次都是用一个查一个,这个,终于见到一个完整的总结了http://blog.csdn.net/blog_empire/article/details/39298557 一.数组方法 创建数组:arange()创建一维数组:array()创建一维或多维数组,其参数是类似于数组的对象,如列表等 读取数组元素:如a[0],a[0,0] 数组变形:如b=a.reshape(2,3,4)将得到原数组变为2*3*4的三维数组后的数组:或是a.shape=(2

Python数据分析之numpy学习

Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有关数组的属性和函数 3)数组元素的获取--普通索引.切片.布尔索引和花式索引 4)统计函数与线性代数运算 5)随机数的生成 数组的创建 numpy中使用array()函数创建数组,array的首个参数一定是一个序列,可以是元组也可以是列表. 一维数组的创建 可以使用numpy中的arange()函数

(转)Python数据分析之numpy学习

原文:https://www.cnblogs.com/nxld/p/6058572.html Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有关数组的属性和函数 3)数组元素的获取--普通索引.切片.布尔索引和花式索引 4)统计函数与线性代数运算 5)随机数的生成 数组的创建 numpy中使用array()函数创建数组,array的首个参数一定是

Python数据分析-Numpy

Numpy特点 Numpy作为使用Python进行科学计算的常用库,有着如下特点: 提供了N维数组(矩阵),快速高效,矢量数学运算: 高效的Index,不需要循环,因为底层实现采用了C语言开发. 常见的数组和矩阵的方法 数组和矩阵的创建与维度信息 numpy.array() ## 数组的创建 vector = numpy.array([1,2,3,4]) ## 矩阵的创建 matrix = numpy.array([ [1,2,3], [4,5,6], [7,8,9] ]) shape ## 打

numpy基本函数

在学习python的时候常常需要numpy这个库,每次都是用一个查一个,这个,终于见到一个完整的总结了http://blog.csdn.net/blog_empire/article/details/39298557 一.数组方法 创建数组:arange()创建一维数组:array()创建一维或多维数组,其参数是类似于数组的对象,如列表等 读取数组元素:如a[0],a[0,0] 数组变形:如b=a.reshape(2,3,4)将得到原数组变为2*3*4的三维数组后的数组:或是a.shape=(2

Numpy常用方法及应用总汇

目录 Numpy 1.基本操作 1.1数组转换 1.2数组生成 1.3文件读取 1.4查看操作 2.数据类型 2.1指定数据类型: 2.2查看数据类型 2.3数据类型转换 3.数组运算 3.1数组间运算 3.2数组与标量 4.索引和切片 4.1基本索引和切片 4.2布尔型索引 4.3花式索引 5.数组转置和轴对换 6.数组函数 6.1通用函数:元素级数字函数 6.2where函数 6.3数学和统计方法 6.4排序方法 6.5集合运算函数 线性代数 Numpy 1.基本操作 1.1数组转换 创建数

《Python数据分析常用手册》一、NumPy和Pandas篇

一.常用链接: 1.Python官网:https://www.python.org/ 2.各种库的whl离线安装包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 3.数据分析常用库的离线安装包(pip+wheels)(百度云):http://pan.baidu.com/s/1dEMXbfN 密码:bbs2 二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和