第 4 章 向量化运算#
这一章要解决什么#
前面三章你已经会造数组、取数、广播了。这一章解决一个更「值钱」的问题:
为什么同样的计算,用 NumPy 写会比用 Python 循环写快几十倍?
答案很简单:NumPy 把「循环」搬到了底层 C 代码里,用一整块内存批量算。
import numpy as np
prices = np.array([100.0, 200.0, 300.0])
# Python 写法:逐个循环
for i in range(len(prices)):
prices[i] = prices[i] * 0.8
# NumPy 写法:一行,没有循环
prices = prices * 0.8结果一样,NumPy 快几十倍,代码也短得多。
这一章会教你:怎么把脑子里那个 for 循环,翻译成一行数组运算。
章节导航#
- 第 4.1 节 核心知识点——向量化到底快在哪、归一化差值、角度特征、聚合函数的
axis用法、sort与argsort的区别,以及基于范数的门控变换。 - 第 4.2 节 编程练习——5 道动手题,从「算归一化差值」到「按范数决定要不要做线性变换」。
- 第 4.3 节 常见问题——10 个高频疑问,比如「
axis=0和axis=1到底差在哪」「sort和argsort有什么区别」。
预备知识#
- 已经学过前 3 章,会造数组、切片、广播;
- 知道 Python 的
for循环和if判断; - 知道一点数学:加减乘除、平方根。
本章的一句话主线 凡是「对每个元素做同样的事」,就都能写成一行数组运算。 你要做的不是「把循环写得更快」,而是根本不写循环。
本章内容
第4.1节 核心知识点(45分钟)
本文是 NumPy 数组计算实战课程第 4 章第 1 节,系统讲解 NumPy 向量化运算:为什么数组运算比 Python for 循环快几十倍、怎么把循环思维翻译成一行数组表达式,以及归一化差值、用 arctan2 构造角度特征 …
第4.2节 编程练习(45分钟)
本文是 NumPy 数组计算实战课程第 4 章第 2 节,提供 5 道编程练习:计算两个数组之间的归一化差值并防止分母为零、根据二维向量的分量用 arctan2 构造角度特征、用 sum/mean/max/min 等聚合函数配合 axis …
第4.3节 常见问题(30分钟)
本文是 NumPy 数组计算实战课程第 4 章第 3 节,汇总了初学者在 NumPy 向量化运算上最常遇到的 10 个问题并逐一解答,涵盖向量化相比 for 循环的优势、NumPy 算术运算是否逐元素执行、如何计算差值乘积与逐元素比值、归一 …