第 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 增加 …