NumPy:数组就是向量
约 10 分钟
为什么列表还不够:拿 Python 列表算 [1,2,3] + [4,5,6],得到的是拼接 [1,2,3,4,5,6],而不是逐元素相加!科学计算需要「真正的数组」,这就是 NumPy:
import numpy as np
a = np.array([1, 2, 3])
print(a * 2)
a * 2 得到 [2, 4, 6]——整个数组一起算,不用写循环。
数组就是向量:学数学时向量写成 ,就是「一排有顺序的数」——NumPy 数组正是它。表格是矩阵(二维数组),一张彩色图片是三维数组(高×宽×颜色通道)。深度学习的「张量」,说白了就是 NumPy 数组的 GPU 加强版。
d2l 的第一课就是它:《动手学深度学习》预备知识章第一节讲 ndarray——形状(shape)、逐元素运算、按轴求和。你在这里学会的 np.array、.shape、.sum(),和书里的写法几乎一一对应(PyTorch 的 tensor 模仿 NumPy 设计)。
广播机制很妙:a + 1 会给每个元素加 1,不用把 1 复制三份——NumPy 自动「广播」。这既是效率神器,也是 d2l 代码里最常见的写法。
常见误区:用 for 循环逐个元素算 NumPy 数组。那样又慢又绕——向量化(整个数组一把算)才是 NumPy 的灵魂,速度快几十倍。
练一练:用 np.array 存全家身高(米),一行代码乘 100 变成厘米,再用 .mean() 算平均身高。
小纸条
用 NumPy 把全家身高从米换算成厘米并求平均
登录 后可看答案