Python中矩阵转置,求逆和一些运算
在Python中,常用的进行矩阵运算的库是numpy。numpy里面有与矩阵相关的定义函数,一种是array();另一种是matrix()。问题来了,array()是创建矩阵的函数吗。显然这个函数不是创建矩阵的函数,它的功能只是创建一个数组而已。但是因为在Python里面数组和矩阵非常相似,导致很多人进入了一个误区,把array()创建的数组当做的矩阵。所以如果用array()创建的数组进行矩阵的运算的话,很显然得出的结果是错误的。因此为了进行正确的矩阵运算,就得创建正确的矩阵。
因此,接下来将讲解Python里面矩阵的创建和运算。
矩阵创建
使用的是matrix()函数
from numpy import *
a = matrix([1, 0]) # 创建行矩阵矩阵
b = matrix([[0, 1],[1, 0]]) # 创建二维矩阵,注意:有两层中括号。
h = matrix([[1, 2],[3, 4]])
矩阵转置
有两个函数都能进行矩阵转置。一种是“ .T ”(注意这里是用点号调用转置函数T);另外一种是调用transpose():
c = a.T
f = transpose(a)
注意:这两种函数不只是对一维矩阵有效,对于多维矩阵仍然有效。
将结果输出:
print(c)
print(f)
得出的结果是:
矩阵求逆
这就是矩阵转置的操作,然后就是矩阵的求逆操作。使用的是“ .I ”(注意这个地方是大写的i,不是小写的L)。
g = h.I # 求矩阵的逆
计算结果如下:
矩阵运算
最后我将进行一些简单的矩阵操作,并且和数组操作进行对比。这个结果非常的明显。
from numpy import *
a = matrix([1, 0]) # 创建行矩阵矩阵
b = matrix([[0, 1],[1, 0]]) # 创建二维矩阵,注意:有两层中括号。
h = matrix([[1, 2],[3, 4]])
c = a.T # 矩阵的转置
f = transpose(a)
g = h.I # 求矩阵的逆
a1 = array([1, 0])
b1 = array([[0, 1],[1, 0]])
c1 = array([[1],[0]])
d = a*b*c # 矩阵运算
e = a*b*b*c
d1 = a1*b1*c1 # 数组运算
e1 = a1*b1*b1*c1
print('====矩阵运算====')
print('矩阵相乘:')
print(d) # 矩阵运算结果
print(e)
print('矩阵转置:')
print(c)
print(f)
print('矩阵求逆:')
print(g)
print('====数组运算====')
print('对应的数组相乘')
print(d1) # 数组运算结果,无法做到正确的矩阵运算
print()
print(e1)
从以上结果可以很清楚的看出在Python中数组和矩阵的区别,希望大家以后不要犯我一样的错误。