Numpy提供了numpy.linalg模块,该模块包含了一些常用的线性代数计算方法。
| 函数名称 | 描述说明 |
|---|---|
| dot | 两个数组的点积。 |
| vdot | 两个向量的点积。 |
| inner | 两个数组的内积。 |
| matmul | 两个数组的矩阵积。 |
| det | 计算输入矩阵的行列式。 |
| solve | 求解线性矩阵方程。 |
| inv | 计算矩阵的逆矩阵,逆矩阵与原始矩阵相乘,会得到单位矩阵。 |
dot()点积运算
点积运算就是将 a数组的每一行元素与 b数组的每一列元素相乘再相加。**dot()**按照矩阵的乘法规则,计算两个矩阵的点积运算结果。
A = [1, 2, 3] B = [4, 5, 6] print(np.dot(A, B))
输出结果如下:
“”” 32 “””
二维数组形式
import numpy as np
a = np.array([[100, 200], [23, 12]]) b = np.array([[10, 20], [12, 21]]) dot = np.dot(a, b) print(dot)
输出结果如下:
“”” [[3400 6200] [ 374 712]] “””
计算过程如下:
“”” [[10010+20012 10020+20021]
[2310+1212 2320+1221]] “””
<a name="XSfcv"></a># `vdot()`向量点积运算**向量点积运算**就是**对两个向量对应位的数据相乘后求和的结果**。<br />`vdot()`用于**计算两个向量的点积结果**。```pythonimport numpy as npa = np.array([[100, 200], [23, 12]])b = np.array([[10, 20], [12, 21]])vdot = np.vdot(a, b)print(vdot)# 输出结果如下:"""5528"""
inner()计算内积
inner()函数的计算过程是a数组的每一行元素与b数组的每一行元素相乘后相加。inner()方法用于计算数组之间的内积。
- 输入的是一维数组时,与
dot()函数相同; - 输入的是多维数组时,则与
dot()函数不同。 ```python import numpy as np
A = [[1, 10], [100, 1000]] B = [[1, 2], [3, 4]]
inner函数
print(np.inner(A, B))
dot函数
print(np.dot(A, B))
输出结果如下:
“”” [[ 21 43] [2100 4300]] [[ 31 42] [3100 4200]] “””
计算过程如下:
“”” [[11+210 13+104 ] [1001+10002 1003+10004]] “””
<a name="FEPCq"></a># `matmul()`返回乘积`matmul()`函数**返回两个矩阵的乘积**。- 若两个矩阵的**维度不一致,会产生错误**。```pythonimport numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])b = np.array([[23, 23, 12], [2, 1, 2], [7, 8, 9]])mul = np.matmul(a, b)print(mul)# 输出结果如下:"""[[ 48 49 43][144 145 112][240 241 181]]"""
linalg.det()计算矩阵的行列式
矩阵的行列式指的是通过减去两个对角线元素(左对角线-右对角线)的乘积后的结果。linalg.det()函数使用对角线元素来计算矩阵的行列式。
import numpy as npa = np.array([[1, 2], [3, 4]])print(np.linalg.det(a))# 输出结果如下:"""-2.0000000000000004"""
linalg.solve()计算线性矩阵方程组
该函数用于求解线性矩阵方程组,并以矩阵的形式表示线性方程的解。
# 方程式:3X + 2 Y + Z = 10X + Y + Z = 6X + 2Y - Z = 2# 将方程式转换成矩阵表达形式:方程系数矩阵:3 2 11 1 11 2 -1方程变量矩阵:XYZ方程结果矩阵:1062# 用m、x、n分表表示上述三个矩阵,结果如下:m*x=n 或 x=n/m
将系数矩阵与结果矩阵传递给linalg.solve()函数,即可求出线性矩阵方程组的解。
import numpy as npm = np.array([[3, 2, 1], [1, 1, 1], [1, 2, -1]])print('数组 m:')print(m)print('矩阵 n:')n = np.array([[10], [6], [2]])print(n)print('计算:m^(-1)n:')x = np.linalg.solve(m, n)print(x)# 输出结果如下:"""数组 m:[[ 3 2 1][ 1 1 1][ 1 2 -1]]矩阵 n:[[10][ 6][ 2]]计算:m^(-1)n:[[1.][2.][3.]]"""
linalg.inv()计算矩阵的逆矩阵
该函数用于计算矩阵的逆矩阵,逆矩阵与原矩阵相乘得到单位矩阵。
import numpy as npa = np.array([[1, 2], [3, 4]])print("原数组:", a)b = np.linalg.inv(a)print("求逆:", b)# 输出结果如下:"""原数组: [[1 2][3 4]]求逆: [[-2. 1. ][ 1.5 -0.5]]"""
