小编典典

与常规 Python 列表相比,NumPy 有哪些优势?

all

与常规 Python 列表相比, NumPy有哪些优势?

我有大约 100 个金融市场系列,我将创建一个 100x100x100 = 100 万个单元格的立方体数组。我将对每个 x 与每个 y 和 z 进行回归(3
变量),以用标准误差填充数组。

我听说对于“大型矩阵”,出于性能和可扩展性的原因,我应该使用 NumPy 而不是 Python 列表。问题是,我知道 Python 列表,它们似乎对我有用。

如果我迁移到 NumPy 会有什么好处?

如果我有 1000 个系列(即立方体中有 10 亿个浮点单元)怎么办?


阅读 126

收藏
2022-03-10

共1个答案

小编典典

NumPy 的数组比 Python 列表更紧凑——您描述的列表列表在 Python 中至少需要 20 MB 左右,而单元格中具有单精度浮点数的 NumPy
3D 数组将适合 4 MB。使用 NumPy 读取和写入项目的访问也更快。

也许你对一百万个单元不太在意,但你肯定会关心十亿个单元——这两种方法都不适合 32 位架构,但是对于 64 位构建,NumPy 会得到 4 GB 左右,
单独的 Python 至少需要大约 12 GB(大量指针大小翻倍)——这是一个更昂贵的硬件!

差异主要是由于“间接性” -
Python列表是指向Python对象的指针数组,每个指针至少4个字节加上即使是最小的Python对象也有16个字节(4个用于类型指针,4个用于引用计数,4个对于值——内存分配器向上取整到
16)。NumPy 数组是一个统一值的数组——单精度数字每个占用 4 个字节,双精度数字占用 8 个字节。不太灵活,但您为标准 Python
列表的灵活性付出了巨大的代价!

2022-03-10