numpy.linalg 模块包含线性代数的函数。使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
一、计算逆矩阵

线性代数中,矩阵A与其逆矩阵A ^(-1)相乘后会得到一个单位矩阵I。该定义可以写为A *A ^(-1) =1。numpy.linalg 模块中的 inv 函数可以计算逆矩阵。

1) 用 mat 函数创建示例矩阵

import numpy as np
import matplotlib.pyplot as plt A = np.mat("0 1 2;1 0 3;4 -3 8")

2)用 inv 函数计算逆矩阵

inverse = np.linalg.inv(A)
print("inverse of A\n", inverse)

运行结果如下:

A
[[ 0 1 2]
[ 1 0 3]
[ 4 -3 8]]
inverse of A
[[-4.5 7. -1.5]
[-2. 4. -1. ]
[ 1.5 -2. 0.5]]

3)可能通过原矩阵和逆矩阵相乘的结果来验证

print ("Check\n", A * inverse) #验证计算,原矩阵和逆矩阵相乘的,单位矩阵

结果:

Check
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]

二、求解线性方程组

线性议程组  Ax=b

1)分另创建矩阵A和数组b

A = np.mat("1 -2 1;0 2 -8;-4 5 9") #用mat()函数创建示例矩阵
print("A\n", A)
b = np.array([0, 8, -9])

2)用solve(A, b)解出x,用dot()函数进行验证,并打印

x = np.linalg.solve(A, b)
print("Solution", x)
print("Check\n", np.dot(A , x)) #用dot()函数检查求得的解是否正确

三、特征值和特征向量

特征值(eigenvalue)即方程 Ax = ax 的根,是一个标量,特征向量是关于特征值的向量。在numpy.linalg 模块中, eigvals函数可以计算矩阵的特征值,而 eig 函数可以返回一个包含特征值和对应的特征向量的元组。

用 eigvals 函数求解特征值

用 eig 函数求解特征值和特征向量 ,如下代码:

print("Eigenvalues", np.linalg.eigvals(A))
eigenvalues, eigenvectors = np.linalg.eig(A)
print( "First tuple of eig", eigenvalues)
print(" Second tuple of eig\n", eigenvectors)

四、奇异值分解

奇异值分解,是一种因子分解运算,将一个矩阵分解为3个矩阵的乘积。奇异值分解是特征值分解一种推广。在 numpy.linalg 模块中的svd()函数可以对矩阵进行奇异值分解。该函数返回3个矩阵——U、Sigma和V,其中U和V是正交矩阵,Sigma包含输入矩阵的奇异值(计算出来结果可能是虚数)。

U, Sigma, V = np.linalg.svd(A, full_matrices=False)# 用svd() 函数分解矩阵
print ("U:",U)
print ("Sigma:",Sigma)
print ("V:", V)
print ("Product\n", U * np.diag(Sigma) * V) #用diag函数生成完整的奇异值矩阵

五、广义

pinv 函数进行求解,计算广义逆矩阵需要用到奇异值分解函数pinv(),行列式计算用np.linalg中的函数det():

#使用pinv函数计算广义逆矩阵:
A = np.mat("4 11 14;8 7 -2")
pseudoinv = np.linalg.pinv(A)
print("Pseudo inverse:\n", pseudoinv)
#计算矩阵的行列式
print("\n")
B = np.mat("3 4;5 6")
print("Determinant:", np.linalg.det(B))

全部代码如下:

import numpy as np
import matplotlib.pyplot as plt A = np.mat("0 1 2;1 0 3;4 -3 8") #用mat()函数创建示例矩阵
print ("A\n",A)
inverse = np.linalg.inv(A) #用inv()函数计算逆矩阵
print("inverse of A\n", inverse)
print ("Check\n", A * inverse) #验证计算,原矩阵和逆矩阵相乘的,单位矩阵
# 求解线性方程组
A = np.mat("1 -2 1;0 2 -8;-4 5 9") #用mat()函数创建示例矩阵
b = np.array([0, 8, -9])
x = np.linalg.solve(A, b)
print("Solution", x)
print("Check\n", np.dot(A , x)) #用dot()函数检查求得的解是否正确
#特征值和特征向量 print("Eigenvalues", np.linalg.eigvals(A)) #eigvals函数可以计算矩阵的特征值
eigenvalues, eigenvectors = np.linalg.eig(A) #用 eig 函数求解特征值和特征向量
print( "First tuple of eig", eigenvalues)
print(" Second tuple of eig\n", eigenvectors) #奇异值分解
U, Sigma, V = np.linalg.svd(A, full_matrices=False)# 用svd() 函数分解矩阵
print ("U:",U)
print ("Sigma:",Sigma)
print ("V:", V)
print ("Product\n", U * np.diag(Sigma) * V) #用diag函数生成完整的奇异值矩阵
#使用pinv函数计算广义逆矩阵:
A = np.mat("4 11 14;8 7 -2")
pseudoinv = np.linalg.pinv(A)
print("Pseudo inverse:\n", pseudoinv)
#计算矩阵的行列式
print("\n")
B = np.mat("3 4;5 6")
print("Determinant:", np.linalg.det(B))

运行结果:

本篇介绍了一些numpy.linalg 模块中常用的函数,

Python数据分析--Numpy常用函数介绍(9)-- 与线性代数有关的模块linalg的更多相关文章

  1. Python数据分析--Numpy常用函数介绍(2)

    摘要:本篇我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.学习读写文件的方法,并尝试函数式编程和NumPy线性代数运算,来学习NumPy的常用函数. ...

  2. Python数据分析--Numpy常用函数介绍(4)--Numpy中的线性关系和数据修剪压缩

    摘要:总结股票均线计算原理--线性关系,也是以后大数据处理的基础之一,NumPy的 linalg 包是专门用于线性代数计算的.作一个假设,就是一个价格可以根据N个之前的价格利用线性模型计算得出. 前一 ...

  3. Python数据分析--Numpy常用函数介绍(5)--Numpy中的相关性函数

    摘要:NumPy中包含大量的函数,这些函数的设计初衷是能更方便地使用,掌握解这些函数,可以提升自己的工作效率.这些函数包括数组元素的选取和多项式运算等.下面通过实例进行详细了解. 前述通过对某公司股票 ...

  4. Python数据分析--Numpy常用函数介绍(6)--Numpy中矩阵和通用函数

    在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat . matrix 以及 bmat 函数来创建矩阵. 一.创建矩阵 mat 函数创 ...

  5. Python数据分析--Numpy常用函数介绍(6)--Numpy中与股票成交量有关的计算

    成交量(volume)是投资中一个非常重要的变量,它是指在某一时段内具体的交易数,可以在分时图中绘制,包括日线图.周线图.月线图甚至是5分钟.30分钟.60分钟图中绘制. 股票市场成交量的变化反映了资 ...

  6. Python数据分析--Numpy常用函数介绍(3)

    摘要:先汇总相关股票价格,然后有选择地对其分类,再计算移动均线.布林线等. 一.汇总数据 汇总整个交易周中从周一到周五的所有数据(包括日期.开盘价.最高价.最低价.收盘价,成交量等),由于我们的数据是 ...

  7. Python数据分析--Numpy常用函数介绍(9)--Numpy中几中常见的图形

    在NumPy中,所有的标准三角函数如sin.cos.tan等均有对应的通用函数. 一.利萨茹曲线 (Lissajous curve)利萨茹曲线是一种很有趣的使用三角函数的方式(示波器上显示出利萨茹曲线 ...

  8. Python数据分析-Numpy数值计算

    Numpy介绍: NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. NumPy的主要功能: 1)ndarray,一个多维数组结构,高效且节省空间 2)无需循环对整组 ...

  9. Python数据分析——numpy基础简介

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:基因学苑 NumPy(Numerical Python的简称)是高性 ...

  10. numpy常用函数学习

    目录numpy常用函数学习点乘法线型预测线性拟合裁剪.压缩和累乘相关性多项式拟合提取符号数组杂项点乘法该方法为数学方法,但是在numpy使用的时候略坑.numpy的点乘为a.dot(b)或numpy. ...

随机推荐

  1. typeof instanceof 之间的区别总结

        typeof   它返回值是一个字符串,该字符串说明运算数的类型. a=1; b=true; c="c"; d=function(){ console.log(" ...

  2. 做个无边框winform窗体,并美化界面

    今天下午程序写完,有些时间就搞下界面美化,做个无框窗体.首先把窗体的FormBorderStyle设置为None,就变成无框的啦,不过你会发现这样窗体上就没有原来的最大最小化和关闭按钮了哦,所以要自己 ...

  3. MySQL · 引擎特性 · InnoDB奔溃恢复

    前言 数据库系统与文件系统最大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的奔溃恢复机制来保证.本 ...

  4. 学习MySQL(上)

    具体实例 1.PHP 服务器组件 对于初学者建议使用集成的服务器组件,它已经包含了 PHP.Apache.Mysql 等服务,免去了开发人员将时间花费在繁琐的配置环境过程. Window 系统可以使用 ...

  5. log4j配置文件简要记录

    和大多数配置文件一样,log4j配置文件也有key-value形式和xml形式.这里主要记录一下key-value的形式 我们通过配置,可以创建出Log4j的运行环境.Log4j由三个重要的组件构成: ...

  6. [Swift]LeetCode322. 零钱兑换 | Coin Change

    You are given coins of different denominations and a total amount of money amount. Write a function ...

  7. vue2.0s中eventBus实现兄弟组件通信

    在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...

  8. log4j.appender.file.DatePattern

    DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件. 我们可以按下面的方式配置DailyRollingFileApp ...

  9. artTemplate--使用artTemplate时,由于json对象属性有特殊格式 导致调用报错artTemplate,syntax error,Template Error

    我们首先看下面的代码 data = { "siteName" : "西部云谷二期17", "PM10" : "10017" ...

  10. 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法

    先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填... ================================= ...