5.6Python数据处理篇之Sympy系列(六)---矩阵的操作
目录
前言
今天我们学习的是,有关sympy的矩阵操作
对应官方的:Matrices
官方教程
https://docs.sympy.org/latest/tutorial/matrices.html
参考网站
https://junjiecai.github.io/posts/2017/Jan/30/sympy_intro_3/
(一)矩阵的创建-Matrix()
1.说明:
Matrix(list),使用list来确定矩阵的维度。
2.源代码:
from sympy import *
# 一纬矩阵
m1 = Matrix([1, 2, 3])
#二维矩阵
m2 = Matrix([[1, -1], [3, 4], [0, 2]])
print(latex(m1))
print(latex(m2))
3.输出:
\]
\]

(二)常用的构造矩阵
1.说明:
可以使用sympy自带的方法来快速的构造常用矩阵
- 单位矩阵:eye()
- 零矩阵:zeros()
- 一矩阵:ones()
- 对角矩阵:diag()
2.源代码:
from sympy import *
# 单位矩阵
m1 = eye(3)
print(latex(m1))
# 零矩阵
m2 = zeros(3, 4)
print(latex(m2))
# 一矩阵
m3 = ones(3, 4)
print(latex(m3))
# 对角矩阵
m4 = diag([1, 2, 3])
print(latex(m4))
3.输出:
单位矩阵
\]
零矩阵
\]
一矩阵
\]
对角矩阵
\]

(三)基本操作
1.说明:
基本操作有以下几个:
- 获取形状:.shape()
- 获得单行与单列:.row(n) .col(n)
- 删除行与列:row_del(n) .col_del(n)
- 插入新行与列:.row_insert(pos, M) .col_insert(pos, M)
- 对矩阵求转置:m.T
2.源代码:
from sympy import *
m = Matrix([[1, -1], [3, 4], [0, 2]])
# 矩阵
print(m)
# 获得形状
print(m.shape)
# 获得单行与单列
print(m.row(0))
print(m.col(0))
# 删除行与列
m.row_del(0)
print("删除第一行后:", m)
m.col_del(0)
print("删除第一列后:", m)
print(m)
# 插入新的行与列
m2 = Matrix([[2, 3]])
print("m2:", m2)
m2 = m2.row_insert(1, Matrix([[0, 4]]))
print("插入新行后:", m2)
m2 = m2.col_insert(2, Matrix([9, 8]))
print("插入新列后:", m2)
# 求逆矩阵
print("其逆矩阵是:", m2.T)
3.输出:
\]
其形状是:(3, 2)
第一行是:
\]
第一列是:
\]
删除第一行后:
\]
删除第一列后:
\]
\]
插入一行是:
\]
插入一列是:
\]
其转转置矩阵是:
\]

(四)矩阵的运算
1.加减法
(1)说明:
sympy里的加减法,直接使用+ -即可
(2)源代码:
from sympy import *
M = Matrix([1, 2, 3])
N = Matrix([4, 5, 6])
# 加法与减法
print("M+N:", M+N)
print("M-N:", M-N)
(3)输出效果:
\]
\]
\]
\]

2.乘法与求逆
(1)说明:
乘法:*
求逆矩阵:M**(-1)
(2)源代码:
from sympy import *
M = Matrix([[1, -1, 1], [2, 3, -2]])
N = Matrix([[1, 2], [2, 1], [1, 1]])
# 求乘法
print(M*N)
# 求逆矩阵
m = Matrix([[1, 3], [-2, 3]])
print(m**(-1))
(3)输出效果:
\]
\]
\]
\]
\]

(五)行列式
1.说明:
- 求行列式:M.det()
- 求阶梯矩阵:M.rref()
- 求特征值与向量:M.eignvals()
2.源代码:
from sympy import *
M = Matrix([[1, 0, 1], [2, -1, 3], [4, 3, 2]])
# 求行列式
print("行列式:", M.det())
# 求阶梯行列式
print("阶梯行列式:", M.rref())
# 求特征值与特征向量
M = Matrix([[3, -2, 4, -2], [5, 3, -3, -2], [5, -2, 2, -2], [5, -2, -3, 3]])
print("特征值与特征向量: ", M.eigenvals())
3.输出:
\]
\]
M的阶梯矩阵:
\]
另一个M矩阵:
\]
其特征值是:
\]

(六)对角化矩阵
1.说明:
如果要对角化一个矩阵,用
diagonalize()
2.源代码:
from sympy import *
M = Matrix([[3, -2, 4, -2], [5, 3, -3, -2], [5, -2, 2, -2], [5, -2, -3, 3]])
P, D = M.diagonalize()
print('矩阵M')
print(M)
print('矩阵P')
print(P)
print('矩阵D')
print(D)
print("P*D*P**-1")
print(P*D*P**-1)
3.输出:
\]
\]
\]
\(PDP^{−1}=\)
\]

作者:Mark
日期:2019/03/18 周一
5.6Python数据处理篇之Sympy系列(六)---矩阵的操作的更多相关文章
- 3.6Python数据处理篇之Numpy系列(六)---Numpy随机函数
目录 目录 前言 (一)基础的随机函数 (二)轴的随机函数 (三)概率的随机函数 目录 前言 前一段日子学了numpy,觉得无趣,没有学完,不过后来看了看matplotlib,sympy等库时,频频用 ...
- 4.6Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist2d()直方图
目录 目录 前言 (一)直方图 (二)双直方图 目录 前言 今天我们学习的是直方图,导入的函数是: plt.hist(x=x, bins=10) 与plt.hist2D(x=x, y=y) (一)直方 ...
- 5.5Python数据处理篇之Sympy系列(五)---解方程
目录 目录 前言 (一)求解多元一次方程-solve() 1.说明: 2.源代码: 3.输出: (二)解线性方程组-linsolve() 1.说明: 2.源代码: 3.输出: (三)解非线性方程组-n ...
- 5.4Python数据处理篇之Sympy系列(四)---微积分
目录 目录 前言 (一)求导数-diff() 1.一阶求导-diff() 2.多阶求导-diff() 3.求偏导数-diff() (二)求积分-integrate() (三)求极限-limit() ( ...
- 5.3Python数据处理篇之Sympy系列(三)---简化操作
目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...
- 5.2Python数据处理篇之Sympy系列(二)---Sympy的基本操作
目录 目录 前言 (一)符号的初始化与输出设置-symbol() symbols() latex() 1.作用: 2.操作: (二)替换符号-subs(old,new) 1.说明: 2.源代码: 3. ...
- 5.1Python数据处理篇之Sympy系列(一)---Sympy的大体认识
目录 目录 前言 目录 前言 sympy是python一个强大的数学符号运算第三方库,具体的功能请看下面操作 官网教程: https://docs.sympy.org/latest/tutorial/ ...
- 4.3Python数据处理篇之Matplotlib系列(三)---plt.plot()折线图
目录 前言 (一)plt.plot()函数的本质 ==1.说明== ==2.源代码== ==3.展示效果== (二)plt.plot()函数缺省x时 ==1.说明== ==2.源代码== ==3.展示 ...
- paper 9:SVM番外篇:支持向量机系列六:Duality —— 关于 dual 问题推导的一些补充理论。
在之前关于 support vector 的推导中,我们提到了 dual ,这里再来补充一点相关的知识.这套理论不仅适用于 SVM 的优化问题,而是对于所有带约束的优化问题都适用的,是优化理论中的一个 ...
随机推荐
- Hive篇--搭建Hive集群
一.前述 Hive中搭建分为三中方式 a)内嵌Derby方式 b)Local方式 c)Remote方式 三种方式归根到底就是元数据的存储位置不一样. 二.具体实现 a)内嵌Derby方式 使用derb ...
- Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?
前言 在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty. 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚. 本文就来从历史源头说道说道. 传统 IO ...
- 基于winserver部署Apollo初次体验(附.net客户端demo)
前言 配置中心伴随着这几年分布式系统演变和微服务架构的兴起,已经成为必不可少的需求之一.试下一下如果哪天公司的所有应用服务,从公司服务器迁移到云服务,成千上万的配置,修改起来是多么耗时费劲的事(我们公 ...
- vs2012 aps.net 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为
系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.NET 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.net 4.5,这样您的网站才可能正确 ...
- c#进程、定时器初步学习
首先是什么原因让我做这个小项目的呢,是因为在知乎里看到的游侠的文章才尝试着自己做的,文章地址是:https://www.zhihu.com/question/48811975 开始做的时候我是照着文章 ...
- 全文检索-Elasticsearch (一) 安装与基础概念
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口 Elasticsearch由java开发,所以在搭建时,需先安 ...
- Python:正则表达式 re 模块
正则是处理字符串最常用的方法,我们编码中到处可见正则的身影. 正则大同小异,python 中的正则跟其他语言相比略有差异: 1.替换字符串时,替换的字符串可以是一个函数 2.split 函数可以指定分 ...
- ThreadPoolExecutor系列二——ThreadPoolExecutor 代码流程图
ThreadPoolExecutor 代码流程图 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7681648.ht ...
- JavaScript与WebAssembly进行比较
本文由云+社区发表 作者:QQ音乐前端团队 在识别和描述核心元素的过程中,我们分享了构建SessionStack时使用的一些经验法则,这是一个轻量级但健壮且高性能的JavaScript应用程序,以帮助 ...
- Docker最全教程——从理论到实战(六)
托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅. 自建还是托管? 在开始之前,我们先来讨论一个问题——是自建 ...