矩阵乘法
Coddy NumPy 基础 课程的第 18 课,共 18 课。
矩阵乘法是一系列点积,结果会生成一个新矩阵。
它是如何工作的?
假设我们有两个矩阵 A,形状为 (3, 2),以及 B,形状为 (2, 4)。
A 和 B 相乘后会得到一个形状为 (3, 4) 的新矩阵。
矩阵的内部维度必须匹配(在本例中,A 和 B 的内部维度都是 2 -> (3,2)(2,4)=(3,4))
A*b 相乘就是
- A 的第 1 行与 B 的第 1 列的点积,结果是位置 [1, 1] 上的元素
- A 的第 1 行与 B 的第 2 列的点积,结果是位置 [1, 2] 上的元素
- ...
- ...
- A 的第 2 行与 B 的第 1 列的点积,结果是位置 [2, 1] 上的元素
- A 的第 2 行与 B 的第 2 列的点积,结果是位置 [2, 2] 上的元素
- ...
- ...
- 依此类推。
示例:
矩阵 A:
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
矩阵 B:
| 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 |
结果:
| 1*7 + 2*11 | 1*8 + 2*12 | 1*9 + 2*13 | 1*10 + 2*14 |
| 3*7 + 4*11 | 3*8 + 4*12 | 3*9 + 4*13 | 3*10 + 4*14 |
| 5*7 + 6*11 | 5*8 + 6*12 | 5*9 + 6*13 | 5*10 + 6*14 |
计算后:
| 29 | 32 | 35 | 38 |
| 65 | 72 | 79 | 86 |
| 101 | 112 | 123 | 134 |
如何在 numpy 中实现?
矩阵相乘有 3 种方法:
np.matmul(matrix1, matrix2)matrix1.dot(matrix2)A @ B
import numpy as np
A = np.array([[1, 2], [3, 4], [5, 6]])
B = np.array([[7, 8, 9, 10], [11, 12, 13, 14]])
np.matmul(A,B)输出:
array([[ 29, 32, 35, 38],
[ 65, 72, 79, 86],
[101, 112, 123, 134]])这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
挑战
创建一个名为 matrix_master 的函数,它接收 3 个 Python 列表,返回前两个列表的矩阵乘法结果与最后一个列表的点积
亲手试试
import numpy as np
def matrix_master(lst1, lst2, lst3):
# complete
NumPy 基础中的所有课
自己练习: Python 在线编译器