返回首页

Roadmap

第 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 算术运算是否逐元素执行、如何计算差值乘积与逐元素比值、归一 …