Numpy提供了numpy.linalg模块,该模块包含了一些常用的线性代数计算方法。

函数名称 描述说明
dot 两个数组的点积。
vdot 两个向量的点积。
inner 两个数组的内积。
matmul 两个数组的矩阵积。
det 计算输入矩阵的行列式。
solve 求解线性矩阵方程。
inv 计算矩阵的逆矩阵,逆矩阵与原始矩阵相乘,会得到单位矩阵。

dot()点积运算

点积运算就是将 a数组的每一行元素b数组的每一列元素相乘再相加
**dot()**按照矩阵的乘法规则计算两个矩阵的点积运算结果

  • 输入的是一维数组,返回一个结果值;
  • 输入的是多维数组,返回一个多维数组结果。 ```python

    一维数组形式

    import numpy as np

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]] “””

  1. <a name="XSfcv"></a>
  2. # `vdot()`向量点积运算
  3. **向量点积运算**就是**对两个向量对应位的数据相乘后求和的结果**。<br />`vdot()`用于**计算两个向量的点积结果**。
  4. ```python
  5. import numpy as np
  6. a = np.array([[100, 200], [23, 12]])
  7. b = np.array([[10, 20], [12, 21]])
  8. vdot = np.vdot(a, b)
  9. print(vdot)
  10. # 输出结果如下:
  11. """
  12. 5528
  13. """

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]] “””

  1. <a name="FEPCq"></a>
  2. # `matmul()`返回乘积
  3. `matmul()`函数**返回两个矩阵的乘积**。
  4. - 若两个矩阵的**维度不一致,会产生错误**。
  5. ```python
  6. import numpy as np
  7. a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  8. b = np.array([[23, 23, 12], [2, 1, 2], [7, 8, 9]])
  9. mul = np.matmul(a, b)
  10. print(mul)
  11. # 输出结果如下:
  12. """
  13. [[ 48 49 43]
  14. [144 145 112]
  15. [240 241 181]]
  16. """

linalg.det()计算矩阵的行列式

矩阵的行列式指的是通过减去两个对角线元素(左对角线-右对角线)的乘积后的结果
linalg.det()函数使用对角线元素来计算矩阵的行列式。

  1. import numpy as np
  2. a = np.array([[1, 2], [3, 4]])
  3. print(np.linalg.det(a))
  4. # 输出结果如下:
  5. """
  6. -2.0000000000000004
  7. """

linalg.solve()计算线性矩阵方程组

该函数用于求解线性矩阵方程组,并以矩阵的形式表示线性方程的解。

  1. # 方程式:
  2. 3X + 2 Y + Z = 10
  3. X + Y + Z = 6
  4. X + 2Y - Z = 2
  5. # 将方程式转换成矩阵表达形式:
  6. 方程系数矩阵:
  7. 3 2 1
  8. 1 1 1
  9. 1 2 -1
  10. 方程变量矩阵:
  11. X
  12. Y
  13. Z
  14. 方程结果矩阵:
  15. 10
  16. 6
  17. 2
  18. # 用m、x、n分表表示上述三个矩阵,结果如下:
  19. m*x=n x=n/m

系数矩阵结果矩阵传递给linalg.solve()函数,即可求出线性矩阵方程组的解。

  1. import numpy as np
  2. m = np.array([[3, 2, 1], [1, 1, 1], [1, 2, -1]])
  3. print('数组 m:')
  4. print(m)
  5. print('矩阵 n:')
  6. n = np.array([[10], [6], [2]])
  7. print(n)
  8. print('计算:m^(-1)n:')
  9. x = np.linalg.solve(m, n)
  10. print(x)
  11. # 输出结果如下:
  12. """
  13. 数组 m:
  14. [[ 3 2 1]
  15. [ 1 1 1]
  16. [ 1 2 -1]]
  17. 矩阵 n:
  18. [[10]
  19. [ 6]
  20. [ 2]]
  21. 计算:m^(-1)n:
  22. [[1.]
  23. [2.]
  24. [3.]]
  25. """

linalg.inv()计算矩阵的逆矩阵

该函数用于计算矩阵的逆矩阵逆矩阵与原矩阵相乘得到单位矩阵

  1. import numpy as np
  2. a = np.array([[1, 2], [3, 4]])
  3. print("原数组:", a)
  4. b = np.linalg.inv(a)
  5. print("求逆:", b)
  6. # 输出结果如下:
  7. """
  8. 原数组: [[1 2]
  9. [3 4]]
  10. 求逆: [[-2. 1. ]
  11. [ 1.5 -0.5]]
  12. """