python矩阵操作_5.6Python数据处理篇之Sympy系列(六)---矩阵的操作

目录

[TOC]

前言

(一)矩阵的创建-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.输出:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%5C%5C2%5C%5C3%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%20-1%5C%5C3%20%26%204%5C%5C0%20%26%202%5Cend%7Bmatrix%7D%5Cright%5D

e94d02707f4a

01.png

(二)常用的构造矩阵

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.输出:

单位矩阵

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%200%20%26%200%5C%5C0%20%26%201%20%26%200%5C%5C0%20%26%200%20%26%201%5Cend%7Bmatrix%7D%5Cright%5D

零矩阵

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D0%20%26%200%20%26%200%20%26%200%5C%5C0%20%26%200%20%26%200%20%26%200%5C%5C0%20%26%200%20%26%200%20%26%200%5Cend%7Bmatrix%7D%5Cright%5D

一矩阵

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%201%20%26%201%20%26%201%5C%5C1%20%26%201%20%26%201%20%26%201%5C%5C1%20%26%201%20%26%201%20%26%201%5Cend%7Bmatrix%7D%5Cright%5D

对角矩阵

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%200%20%26%200%5C%5C0%20%26%202%20%26%200%5C%5C0%20%26%200%20%26%203%5Cend%7Bmatrix%7D%5Cright%5D

e94d02707f4a

02.png

(三)基本操作

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.输出:

math?formula=m%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%20-1%5C%5C3%20%26%204%5C%5C0%20%26%202%5Cend%7Bmatrix%7D%5Cright%5D

其形状是:(3, 2)

第一行是:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%20-1%5Cend%7Bmatrix%7D%5Cright%5D

第一列是:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D1%5C%5C3%5C%5C0%5Cend%7Bmatrix%7D%5Cright%5D

删除第一行后:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D3%20%26%204%5C%5C0%20%26%202%5Cend%7Bmatrix%7D%5Cright%5D

删除第一列后:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D4%5C%5C2%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=m2%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D2%20%26%203%5Cend%7Bmatrix%7D%5Cright%5D

插入一行是:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D2%20%26%203%5C%5C0%20%26%204%5Cend%7Bmatrix%7D%5Cright%5D

插入一列是:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D2%20%26%203%20%26%209%5C%5C0%20%26%204%20%26%208%5Cend%7Bmatrix%7D%5Cright%5D

其转转置矩阵是:

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D2%20%26%203%20%26%209%5C%5C0%20%26%204%20%26%208%5Cend%7Bmatrix%7D%5Cright%5D

e94d02707f4a

03.png

(四)矩阵的运算

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)输出效果:

math?formula=M%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%5C%5C2%5C%5C3%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=N%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D4%5C%5C5%5C%5C6%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=M%20%2B%20N%20%3D%5Cleft%5B%5Cbegin%7Bmatrix%7D5%5C%5C7%5C%5C9%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=M%20-%20N%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D-3%5C%5C-3%5C%5C-3%5Cend%7Bmatrix%7D%5Cright%5D

e94d02707f4a

04.png

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)输出效果:

math?formula=M%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%20-1%20%26%201%5C%5C2%20%26%203%20%26%20-2%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=N%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%202%5C%5C2%20%26%201%5C%5C1%20%26%201%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=M*N%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D0%20%26%202%5C%5C6%20%26%205%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=m%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%203%5C%5C-2%20%26%203%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=m%5E%7B-1%7D%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D%5Cfrac%7B1%7D%7B3%7D%20%26%20-%20%5Cfrac%7B1%7D%7B3%7D%5C%5C%5Cfrac%7B2%7D%7B9%7D%20%26%20%5Cfrac%7B1%7D%7B9%7D%5Cend%7Bmatrix%7D%5Cright%5D

e94d02707f4a

05.png

(五)行列式

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.输出:

math?formula=%5Cbegin%7Bvmatrix%7D1%20%26%200%20%26%201%5C%5C2%20%26%20-1%20%26%203%5C%5C4%20%26%203%20%26%202%5Cend%7Bvmatrix%7D%3D1

math?formula=M%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%200%20%26%201%5C%5C2%20%26%20-1%20%26%203%5C%5C4%20%26%203%20%26%202%5Cend%7Bmatrix%7D%5Cright%5D

M的阶梯矩阵:

math?formula=%5Cleft%20(%20%5Cleft%5B%5Cbegin%7Bmatrix%7D1%20%26%200%20%26%200%5C%5C0%20%26%201%20%26%200%5C%5C0%20%26%200%20%26%201%5Cend%7Bmatrix%7D%5Cright%5D%2C%20%5Cquad%20%5Cleft%20(%200%2C%20%5Cquad%201%2C%20%5Cquad%202%5Cright%20)%5Cright%20)

另一个M矩阵:

math?formula=M%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D3%20%26%20-2%20%26%204%20%26%20-2%5C%5C5%20%26%203%20%26%20-3%20%26%20-2%5C%5C5%20%26%20-2%20%26%202%20%26%20-2%5C%5C5%20%26%20-2%20%26%20-3%20%26%203%5Cend%7Bmatrix%7D%5Cright%5D

其特征值是:

math?formula=%5Cleft%20%5C%7B%20-2%20%3A%201%2C%20%5Cquad%203%20%3A%201%2C%20%5Cquad%205%20%3A%202%5Cright%20%5C%7D

e94d02707f4a

06.png

(六)对角化矩阵

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.输出:

math?formula=M%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D3%20%26%20-2%20%26%204%20%26%20-2%5C%5C5%20%26%203%20%26%20-3%20%26%20-2%5C%5C5%20%26%20-2%20%26%202%20%26%20-2%5C%5C5%20%26%20-2%20%26%20-3%20%26%203%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=P%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D0%20%26%201%20%26%201%20%26%200%5C%5C1%20%26%201%20%26%201%20%26%20-1%5C%5C1%20%26%201%20%26%201%20%26%200%5C%5C1%20%26%201%20%26%200%20%26%201%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=D%20%3D%20%5Cleft%5B%5Cbegin%7Bmatrix%7D-2%20%26%200%20%26%200%20%26%200%5C%5C0%20%26%203%20%26%200%20%26%200%5C%5C0%20%26%200%20%26%205%20%26%200%5C%5C0%20%26%200%20%26%200%20%26%205%5Cend%7Bmatrix%7D%5Cright%5D

math?formula=PDP%5E%7B%E2%88%921%7D%3D

math?formula=%5Cleft%5B%5Cbegin%7Bmatrix%7D3%20%26%20-2%20%26%204%20%26%20-2%5C%5C5%20%26%203%20%26%20-3%20%26%20-2%5C%5C5%20%26%20-2%20%26%202%20%26%20-2%5C%5C5%20%26%20-2%20%26%20-3%20%26%203%5Cend%7Bmatrix%7D%5Cright%5D

e94d02707f4a

07.png

作者:Mark

日期:2019/03/18 周一

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值