NumPy 数组和 Python 列表有什么区别?什么时候必须用 NumPy?
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
核心区别(3 点):
| 维度 | Python 列表 | NumPy 数组 |
|---|---|---|
| 内存 | 存对象引用,元素可任意类型,开销大 | 同类型连续内存,紧凑高效 |
| 运算 | 需 for 循环逐元素 | 向量化,整个数组一起算(底层 C 实现) |
| 功能 | 无矩阵/广播/线性代数 | 多维数组、广播、linalg 全套 |
性能对比:
import numpy as np
# 列表:10 万元素平方,要循环
lst = list(range(100_000))
s = [x * x for x in lst] # 约 10ms
# NumPy:一次向量化运算
arr = np.arange(100_000)
s = arr * arr # 约 0.5ms,快 20 倍以上
什么时候必须用 NumPy: 数值计算、矩阵/张量运算、AI 与科学计算(PyTorch 的底层数据也长这样);存图片、跑机器学习、做统计都要它。
什么时候用列表: 元素类型混杂(如 [1, "a", 2.5])、需要频繁增删元素。
一句话:一切"对一组数字做运算"的场景都用 NumPy;"存杂七杂八的东西"用列表。
回复
0 条回复