矩阵来源于线性方程组的系数行列式,如下一个非齐次线性方程组(系数为0和1的系数也表示了出来):
其系数矩阵为:
方程组的右边常数项表示为列向量为:
如果我们将自变量也表示为列向量如下:
则原方程组可以用矩阵乘积的形式表示为:
在不使用矩阵乘积的方式时,我们实现线性方程的代码如下(双层循环,挨个乘了再加起来):
'''
2019.05.22 13:22
作者:BTboay
'''
if __name__ == '__main__':
a = [[2, 0, 3, 1], [1, 2, 0, 4], [4, 1, 5, 0], [1, 1, 1, 1]]#线性方程组的参数
b = [1, 1, 1, 1]#自变量取值的一个实例
result = []#保存结果
for i in a:
n = 0#用于中间值的累加
for j in range(len(i)):
n += i[j] * b[j]
result.append(n)
print(result)
[6, 7, 10, 4]
[Finished in 0.2s]
Python语言的numpy库提供了优秀的矩阵运算函数,上述线性方程的矩阵乘积形式用Python表示如下:
'''
2019.05.22 13:22
作者:BTboay
'''
import numpy as np
if __name__ == '__main__':
a = [[2, 0, 3, 1], [1, 2, 0, 4], [4, 1, 5, 0], [1, 1, 1, 1]]#线性方程组的参数
b = [1, 1, 1, 1]#自变量取值的一个实例
a = np.mat(a)
b = np.mat(b).transpose()
result = np.dot(a, b)
print(result)
[[ 6]
[ 7]
[10]
[ 4]]
[Finished in 0.4s]
再需要对大量的,规范的数据做相关运算时,使用矩阵方法,可以增强代码的可读性和提高效率。
除了应用在大量的线性运算中,计算平方和时也非常好用:
循环:
'''
2019.05.22 13:22
作者:BTboay
'''
if __name__ == '__main__':
a = [1, 2, 3, 4, 5]
result = 0
for i in a:
result += i ** 2
print(result)
55
[Finished in 0.4s]
矩阵乘积:
'''
2019.05.22 13:22
作者:BTboay
'''
import numpy as np
if __name__ == '__main__':
a = [1, 2, 3, 4, 5]
result = np.dot(a, np.transpose(a))
print(result)
55
[Finished in 0.4s]
以上只是一点思想的启发,运用矩阵乘积形式的地方非多,本文的目的是希望一些入门的同学看到这种形式的计算方法不会一脸懵(我第一次看到这种东西就是一脸懵,哈哈)。