gpt4 book ai didi

python - 内置范围或 numpy.arange : which is more efficient?

转载 作者:IT老高 更新时间:2023-10-28 20:31:01 25 4
gpt4 key购买 nike

在使用范围表达式迭代大型数组时,我应该使用 Python 内置的 range 函数还是 numpy 的 arange 以获得最佳性能?

到目前为止我的推理:

range 可能会求助于 native 实现,因此可能会更快。另一方面,arange 返回一个完整的数组,它占用内存,因此可能会有开销。 Python 3 的范围表达式是一个生成器,它不会保存内存中的所有值。

最佳答案

对于大型数组,向量化的 numpy 操作是最快的。如果必须循环,请首选 xrange/range 并避免使用 np.arange

在 numpy 中,您应该使用向量化计算的组合,ufuncsindexing解决您的问题,因为它以 C 速度运行。与此相比,循环遍历 numpy 数组效率低下。

(您可以做的最糟糕的事情就是使用使用 rangenp.arange 创建的索引作为问题中的第一句话来遍历数组建议,但我不确定你是否真的是这个意思。)

import numpy as np
import sys

sys.version
# out: '2.7.3rc2 (default, Mar 22 2012, 04:35:15) \n[GCC 4.6.3]'
np.version.version
# out: '1.6.2'

size = int(1E6)

%timeit for x in range(size): x ** 2
# out: 10 loops, best of 3: 136 ms per loop

%timeit for x in xrange(size): x ** 2
# out: 10 loops, best of 3: 88.9 ms per loop

# avoid this
%timeit for x in np.arange(size): x ** 2
#out: 1 loops, best of 3: 1.16 s per loop

# use this
%timeit np.arange(size) ** 2
#out: 100 loops, best of 3: 19.5 ms per loop

因此,对于这种情况,如果操作正确,numpy 比使用 xrange 快 4 倍。根据您的问题,numpy 的速度可能比 4 或 5 倍快得多。

this question 的答案解释在大型数据集上使用 numpy 数组而不是 python 列表的更多优势。

关于python - 内置范围或 numpy.arange : which is more efficient?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10698858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com