SymPy库关于矩阵的基本操作和运算

 更新时间:2023年03月10日 08:33:58   作者:jeffery18  
本文主要介绍了SymPy库关于矩阵的基本操作和运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

网上有很多关于科学计算包sympy的介绍,这里我把官方文档的英文表述贴过来。简单翻译就是sympy是个代数系统,底层完全使用python语言写的,使用简单、好理解、易扩展。

SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python.

正好最近在研究线性代数,顺手把SymPy中关于矩阵的基本用法记录一下。

1、矩阵创建

矩阵的创建过程被理解为提供了一组行向量。 A matrix is constructed by providing a list of row vectors that make up the matrix.

import sympy
matrix_a = sympy.Matrix([[1, 3], [-2, 3]])  # 生成2*2的方阵
matrix_b = sympy.Matrix([[1, 0, 2], [2, 3, 4]])  # 生成2*3的矩形矩阵

2、创建列向量

list对象被理解为一个列向量。 a list of elements is considered to be a column vector.

column_vector_a = sympy.Matrix([1, 2, 1])

3、截取矩阵的某一行或列, 使用 row()和 col()

print(matrix_b.col(0))  # 打印第一列
print(matrix_b.row(0))  # 打印第一行
print(matrix_b.col(-1))  # 打印倒数第一列
print(matrix_b.row(-1))  # 打印倒数第一行

4、删除行向量、列向量

使用 row_del 或 col_del. 注意下:这些操作直接修改原来的矩阵对象,不会生成新的对象。

matrix_c = sympy.Matrix([[1, 0, 2, 4], [2, 3, 4, 0], [0, 1, 1, 1]])
matrix_c.row_del(0)  # 删除第一行
matrix_c.col_del(1)  # 删除第二列

5、插入行向量、列向量使用row_insert 或 col_insert。

insert注意三个点: (1)产生新的矩阵对象 (2)第一参数指的是插入位置,第二个参数是需要插入的内容 (3)注意区分插入行向量和列向量,Matrix()括号内略有不同,具体看下面的代码:

matrix_d = sympy.Matrix([[1, 0, -1], [-5, 3, 4]])
matrix_d_insert_col = matrix_d.col_insert(0, sympy.Matrix([8, 9]))  # 在第一列插入列向量[8,9]
# print(matrix_d_insert_col)
matrix_d_insert_row = matrix_d.row_insert(0, sympy.Matrix([[1, 1, 1]]))  # 在第一行插入行向量
# print(matrix_d_insert_row)

6、像加法、乘法这样的简单运算使用+,*, **就可以了

求逆矩阵,只需把power设置为-1即可。 simple operations like addition and multiplication are done just by using +, *, and **. To find the inverse of a matrix, just raise it to the -1 power.

"""矩阵乘法"""
matrix_multiplication = matrix_a * matrix_b
#  print(matrix_multiplication)
 
"""矩阵求逆,如果不可逆,报错NonInvertibleMatrixError: Matrix det == 0; not invertible."""
matrix_inverse = matrix_a ** -1
# print(matrix_inverse)
 
"""矩阵转置"""
matrix_transpose = matrix_a.T
# print(matrix_transpose)

7、特殊矩阵的创建

"""生成单位矩阵,eye(n) will create an  identity matrix"""
matrix_identity = sympy.eye(2)  # 生成二阶单位矩阵
# print(matrix_identity)
 
"""生成n*m的零矩阵,zeros(m,n)"""
matrix_zero = sympy.zeros(2, 3)  # 生成2*3的零矩阵
# print(matrix_zero)
 
"""生成元素都是1的矩阵,ones(m,n)"""
matrix_one = sympy.ones(2, 2)  # 生成2*2的元素都为1的方阵
# print(matrix_one)
 
"""生成对角矩阵,diag(),参数可以是数字,也可以是矩阵
The arguments to diag can be either numbers or matrices. 
A number is interpreted as a  matrix. The matrices are stacked diagonally. """
matrix_diag_1 = sympy.diag(1, 2, 3)  # 生成对角线元素为1,2,3的三阶方阵
# print(matrix_diag_1)
matrix_diag_2 = sympy.diag(1, sympy.ones(2, 2), sympy.Matrix([[1, 2], [1, 3]]))
# print(matrix_diag_2)

到此这篇关于SymPy库关于矩阵的基本操作和运算的文章就介绍到这了,更多相关SymPy矩阵运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 多张图片合并成一个pdf的参考示例

    Python 多张图片合并成一个pdf的参考示例

    最近需要将记的笔记整理成一个pdf进行保存,所以就研究了一下如何利用 Python 代码将拍下来的照片整个合并成一个pdf
    2021-06-06
  • django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例

    django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例

    这篇文章主要介绍了django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python基于文本内容实现隐私信息提取与评估

    Python基于文本内容实现隐私信息提取与评估

    这篇文章主要为大家介绍了Python如何实现基于文本内容的用户隐私泄露风险评估系统,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2025-03-03
  • Python爬虫代理IP池实现方法

    Python爬虫代理IP池实现方法

    在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,所以就想利用一些免费的资源搞一个简单的代理池服务。
    2017-01-01
  • 手把手带你了解Python数据分析--matplotlib

    手把手带你了解Python数据分析--matplotlib

    这篇文章主要介绍了Python实现matplotlib显示中文的方法,结合实例形式详细总结分析了Python使用matplotlib库绘图时显示中文的相关操作技巧与注意事项,需要的朋友可以参考下
    2021-08-08
  • 使用C语言来扩展Python程序和Zope服务器的教程

    使用C语言来扩展Python程序和Zope服务器的教程

    这篇文章主要介绍了使用C语言来扩展Python程序和Zope服务器的教程,本文来自于IBM官方网站技术文档,需要的朋友可以参考下
    2015-04-04
  • python dict乱码如何解决

    python dict乱码如何解决

    在本篇文章里小编给大家分享了关于python dict乱码解决方法,需要的朋友们可以参考下。
    2020-06-06
  • Python实现双X轴双Y轴绘图的示例详解

    Python实现双X轴双Y轴绘图的示例详解

    这篇文章主要介绍了如何利用fig.add_subplot和axes.twinx().twiny()方法实现双X轴双Y轴绘图,文中的示例代码讲解详细,快跟随小编一起动手尝试一下吧
    2022-04-04
  • python实现同一局域网下传输图片

    python实现同一局域网下传输图片

    这篇文章主要为大家详细介绍了python实现同一局域网下传输图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python 迭代器和生成器概念及场景分析

    Python 迭代器和生成器概念及场景分析

    yield 是 Python 中实现惰性计算和协程的核心工具,结合 send()、throw()、close() 等方法,能够构建高效、灵活的数据流和控制流模型,这篇文章主要介绍了Python 迭代器和生成器概念,需要的朋友可以参考下
    2025-04-04

最新评论