DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Python

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;"存杂七杂八的东西"用列表。

REPLIES

回复

0 条回复
暂无回复。