gpt4 book ai didi

python - statistics.mean() vs sum()/len() vs np.average() 对于列表列表

转载 作者:行者123 更新时间:2023-11-28 20:57:42 33 4
gpt4 key购买 nike

数据:一系列大小相等的列表,必须沿列进行平均以返回一个平均列表

使用 statistics.mean()sum()/len() 之一在 python 中平均上述数据是否更快?将其转换为 numpy 数组然后使用 np.average()

还是没有显着差异?

This question提供了使用哪种方法的答案,但未提及与替代方法的任何比较。

最佳答案

您可以衡量不同提案的性能。我假设比沿着列意味着这是按行的。例如,如果您有 1000 个列表,每个列表的末尾有 100 个元素,您将得到一个具有 100 个平均值的列表。

import random
import numpy as np
import statistics
import timeit

data = [[random.random() for _ in range(100)] for _ in range(1000)]


def average(data):
return np.average(data, axis=0)


def sum_len(data):
return [sum(l) / len(l) for l in zip(*data)]


def mean(data):
return [statistics.mean(l) for l in zip(*data)]


if __name__ == "__main__":
print(timeit.timeit('average(data)', 'from __main__ import data,average', number=10))
print(timeit.timeit('sum_len(data)', 'from __main__ import data,sum_len', number=10))
print(timeit.timeit('mean(data)', 'from __main__ import data,mean', number=10))

输出

0.025441123012569733
0.029354612997849472
1.0484535950090503

看起来 statistics.meannp.averagesum_len 方法慢得多(大约慢 35 倍),并且比 np.averagesum_len 略快。

关于python - statistics.mean() vs sum()/len() vs np.average() 对于列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457908/

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