【发布时间】:2011-01-13 22:52:08
【问题描述】:
在 Python 中初始化和访问大型数组元素的有效方法是什么?
我想在 Python 中创建一个包含 1 亿个条目、无符号 4 字节整数、初始化为零的数组。我想要快速的数组访问,最好使用连续内存。
奇怪的是,NumPy 数组似乎执行得很慢。我可以尝试其他方法吗?
有 array.array 模块,但我没有看到一种方法可以有效地分配一个包含 1 亿个条目的块。
对 cmets 的回应:
- 我不能使用稀疏数组。这个算法太慢了,因为数组很快变得密集。
- 我知道 Python 是解释型的,但肯定有办法进行快速数组操作吗?
- 我进行了一些分析,我使用 NumPy 每秒获得大约 160K 数组访问(按索引查找或更新元素)。这似乎很慢。
【问题讨论】:
-
你说的是几百兆字节的数组,在解释语言中......对你来说有多慢?
-
你的数组会稀疏吗?最好只为您实际使用的条目分配内存。
-
你可能想详细说明你想用它做什么。 “高效”本身没有任何意义。
-
优化初始化可能会让你的算法戛然而止。现在谈论优化还为时过早。
-
如果你在 Python 中使用循环来访问数组的元素,那可能是你的性能瓶颈。您应该尽量避免在 Python 中使用循环来访问 numpy 数组的元素。如果失败,您可以查看 Cython。
标签: python arrays performance