gpt4 book ai didi

python - 计算列表平均值的最快方法

转载 作者:行者123 更新时间:2023-12-05 08:39:56 34 4
gpt4 key购买 nike

我想找到计算 python list 平均值的最快方法。我有数百万个 list 存储在 dictionary 中,所以我正在寻找性能方面最有效的方法。

引用this question ,如果 l 是一个 float 列表,我有

  • numpy.mean(l)
  • sum(l)/float(len(l))
  • reduce(lambda x, y: x + y, l)/len(l)

哪种方式最快?

最佳答案

正如@DeepSpace 所建议的,您应该尝试自己回答这个问题。在使用 numpy.mean 之前,您还可以考虑将列表转换为数组。将 %timeitipython 一起使用,如下所示:

In [1]: import random
In [2]: import numpy
In [3]: from functools import reduce
In [4]: l = random.sample(range(0, 100), 50) # generates a random list of 50 elements

numpy.mean 不转换为 np.array

In [5]: %timeit numpy.mean(l)
32.5 µs ± 2.82 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

numpy.mean 转换为 np.array

In [5]: a = numpy.array(a)
In [6]: %timeit numpy.mean(a)
17.6 µs ± 205 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

sum(l)/float(len(l))

In [5]: %timeit sum(l) / float(len(l)) # not required casting (float) in Python 3
774 ns ± 20.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

总和(l)/len(l)

In [5]: %timeit sum(l) / len(l)
623 ns ± 27.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

减少

In [6]: reduce(lambda x, y: x + y, l) / len(l)
5.92 µs ± 514 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

从最慢到最快:

  1. numpy.mean(l) 不转换为数组
  2. numpy.mean(a)将列表转换为 np.array
  3. reduce(lambda x, y: x + y, l)/len(l)
  4. sum(l)/float(len(l)),这适用于 Python 2 和 3
  5. sum(l)/len(l) # 对于 Python 3,你不需要转换(使用 float)

关于python - 计算列表平均值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016779/

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