上QQ阅读APP看书,第一时间看更新
1.4.6 矩阵与线性代数运算
在涉及科学计算时,我们经常需要执行矩阵和线性代数运算,比如矩阵乘法、寻找行列式、求解线性方程组等。NumPy库中有一个矩阵对象,其可以用来处理类似问题。矩阵类似于数组对象,但是遵循线性代数的计算规则。以下示例展示了矩阵的一些基本特性:
import numpy as np m = np.matrix([[1,-2,3],[0,4,5],[7,8,-9]]) print(f'm is:\n{m}') print(f'm.T is:\n{m.T}') print(f'm.I is:\n{m.I}') v = np.matrix([[2],[3],[4]]) print(f'v is:\n{v}') print(f'm * v is:\n{m * v}')
执行py文件,输出结果如下:
m is: [[ 1 -2 3] [ 0 4 5] [ 7 8 -9]] m.T is: [[ 1 0 7] [-2 4 8] [ 3 5 -9]] m.I is: [[ 0.33043478 -0.02608696 0.09565217] [-0.15217391 0.13043478 0.02173913] [ 0.12173913 0.09565217 -0.0173913 ]] v is: [[2] [3] [4]] m * v is: [[ 8] [32] [ 2]]
我们可以在numpy.linalg子包中找到更多的操作函数,示例如下:
import numpy.linalg print(f'numpy.linalg.det(m) is:\n{numpy.linalg.det(m)}') print(f'numpy.linalg.eigvals(m) is:\n{numpy.linalg.eigvals(m)}') x = numpy.linalg.solve(m, v) print(f'x is:\n{x}') print(f'm * x is:\n{m * x}') print(f'v is:\n{v}')
执行py文件,输出结果如下:
numpy.linalg.det(m) is: -229.99999999999983 numpy.linalg.eigvals(m) is: [-13.11474312 2.75956154 6.35518158] x is: [[0.96521739] [0.17391304] [0.46086957]] m * x is: [[2.] [3.] [4.]] v is: [[2] [3] [4]]
线性代数是一个非常大的主题,已经超出了本书讨论的范围。但如果需要操作数组和向量,NumPy是一个不错的入口点。