Menu
CoddyTech

矩阵乘法

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:

12
34
56

矩阵 B:

78910
11121314

结果:

1*7 + 2*111*8 + 2*121*9 + 2*131*10 + 2*14
3*7 + 4*113*8 + 4*123*9 + 4*133*10 + 4*14
5*7 + 6*115*8 + 6*125*9 + 6*135*10 + 6*14

计算后:

29323538
65727986
101112123134

如何在 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]])
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

challenge icon

挑战

创建一个名为 matrix_master 的函数,它接收 3 个 Python 列表,返回前两个列表的矩阵乘法结果与最后一个列表的点积

亲手试试

import numpy as np
def matrix_master(lst1, lst2, lst3):
    # complete

NumPy 基础中的所有课

自己练习: Python 在线编译器