由一个公式引发的学案之numpy矩阵计算
Prologue
本人计算机环境是Win+Linux子系统-Ubuntu,很多Linux下的软件放在Win的系统盘里,加如环境变量和调用的时候一般需要 cd /mnt/e/biosf 这样写,意即进入E盘的biosf文件夹
由一个公式引发的学案现在开始。
[第一幕]
TIM图片20190413155652.jpg
没看原文直接上,欸,这不是列矩阵咩,矩阵怎么能相除呢?
奥~矩阵相除等于前一个矩阵乘以后一个矩阵的逆矩阵啊!
逆矩阵怎么求呢?好像我不会,好像用python可以。。
1.安装numpy (python3)
$ sudo apt install python3-numpy
2.求矩阵的逆
法1
import numpy as np
import numpy.linalg
A = np.mat('1 -1; 1 1')
a = np.linalg.inv(A)
a
matrix([[ 0.5, 0.5],
[-0.5, 0.5]])
法2
import numpy as np
A = np.mat('1 -1; 1 1')
A** -1 # *号后面有个空格
matrix([[ 0.5, 0.5],
[-0.5, 0.5]])
法3
把A** -1换成a= A.I即可,这个在代码块中很有用
3.矩阵运算,分别是乘,加,减,转置,求秩
import numpy as np
A = np.mat('1 -1')
B = np.mat('1 2; 3 4')
A * B
matrix([[-2, -2]])
A + B
matrix([[2, 1],
[4, 3]])
A - B
matrix([[ 0, -3],
[-2, -5]])
A.T
matrix([[ 1],
[-1]])
B.T
matrix([[1, 3],
[2, 4]])
rank_A = np.linalg.matrix_rank(A) #求A矩阵的秩
rank_A
1