返回首页

Roadmap

第 3 章 广播机制#

这一章要解决什么#

上一章你能从数组里精准取数了。这一章解决另一个问题:

「两个形状不一样的数组,能不能直接相乘?」

初学者的第一反应通常是「不能吧,得先循环」。但 NumPy 的答案是:能。

import numpy as np

sales = np.array([[120., 135.], [80., 92.]])     # (2, 2)
factor = np.array([1.2, 0.9])                    # (2,)

print(sales * factor)
[[144.  121.5]
 [ 96.   82.8]]

sales 是 2 行 2 列,factor 只有 2 个数。NumPy 明明「帮它把 factor 复制成了 2 行」:

[[1.2 0.9]
 [1.2 0.9]]

然后逐元素相乘——每一列都乘上了自己那一个系数。

这个「自动补齐」的动作,就叫广播(broadcasting)。

章节导航#

  • 第 3.1 节 核心知识点——广播的三条匹配规则、None / np.newaxis 加维度的技巧,以及外和、按行缩放、两两差值、按列缩放、按列归一化这 5 个实战场景。
  • 第 3.2 节 编程练习——5 道动手题,从「两个一维数组求外和」到「对二维数组按列归一化」。
  • 第 3.3 节 常见问题——10 个高频疑问,比如「(n,) 和 (n, 1) 到底差在哪」「广播会不会复制数据」。

预备知识#

  • 已经学过第 1、2 章,会造数组、会用索引切片;
  • 知道 shape 是什么;
  • 知道 None 在 Python 里表示「空」。

本章的一句话主线 广播就是 NumPy 在运算前悄悄把你的数组「拉伸」成同一个形状。 你只要想清楚「该往哪个方向拉伸」,剩下的都是套路。

本章内容

第3.1节 核心知识点(40分钟)

本文是 NumPy 数组计算实战课程第 3 章第 1 节,系统讲解 NumPy 的广播机制:广播的三条匹配规则、怎么用 None 或 np.newaxis 给数组加一个维度,以及外和运算、按行缩放、两两差值计算、按列缩放、按列归一化这 5 …

第3.2节 编程练习(45分钟)

本文是 NumPy 数组计算实战课程第 3 章第 2 节,提供 5 道编程练习:用广播机制计算两个一维数组的外和矩阵、对二维数组的每一行乘以对应的缩放系数、计算两个数组中所有元素之间的两两差值、对二维数组的每一列应用不同的缩放系数,以及对二 …

第3.3节 常见问题(30分钟)

本文是 NumPy 数组计算实战课程第 3 章第 3 节,汇总了初学者在 NumPy 广播机制上最常遇到的 10 个问题并逐一解答,涵盖广播是什么、核心判断规则、形状不一致时如何判断能否运算、怎么用 None 或 np.newaxis 增加 …