gpt4 book ai didi

python - 列表字典中的元素明智平均值

转载 作者:行者123 更新时间:2023-12-03 07:51:20 29 4
gpt4 key购买 nike

我有一个非常大的Python字典。我想对每个列表中的每个元素执行逐元素平均。比方说:

dict = {
"a": [2,5,3],
"b": [1,0,2],
"c": [5,2,5]
}

输出应为:[2.6 2.3 3.3],其中每个元素是字典中所有列表中该索引处所有元素的平均值。

这种简单的方法似乎效率不高,因为字典很大,字典中的列表也很大。

avg = np.zeros(3)
for item in dict.values():
for x in range(0,3):
avg[x] += item[x]
for x in range(0,3):
avg[x] /= 3
print(avg)

如何有效地做到这一点?

最佳答案

我会使用zipstatistics.mean计算没有中间值的平均值:

from statistics import mean

d = {
"a": [2,5,3],
"b": [1,0,2],
"c": [5,2,5]
}

out = list(map(mean, zip(*d.values())))

输出:

[2.6666666666666665, 2.3333333333333335, 3.3333333333333335]

或者:

out = [round(mean(x), 2) for x in zip(*d.values())]

输出:[2.67, 2.33, 3.33]

或者,正如您使用的 :

out = np.array(list(d.values())).mean(axis=0).tolist()
时间

使用 1000 x 1000 输入(d = {i: [5]*1000 for i in range(1000)})

# original approach (replacing the hardcoded 3 with 1000)
166 ms ± 4.94 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

# list(map(mean, zip(*d.values())))
137 ms ± 1.88 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

# [round(mean(x), 2) for x in zip(*d.values())]
150 ms ± 12.6 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

# np.array(list(d.values())).mean(axis=0).tolist()
30.8 ms ± 609 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

关于python - 列表字典中的元素明智平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77081815/

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