Python - 加权平均列表

GSh*_*ked 18 python average list

谢谢你的回复.是的,我一直在寻找加权平均值.

rate = [14.424, 14.421, 14.417, 14.413, 14.41]

amount = [3058.0, 8826.0, 56705.0, 30657.0, 12984.0]
Run Code Online (Sandbox Code Playgroud)

我想要根据底部列表的每个项目的顶部列表的加权平均值.

因此,如果第一个底部列表项较小(例如3,058与总数112,230相比),那么第一个顶部列表项应该对顶级列表平均值的影响较小.

这是我尝试过的一些内容.它给了我一个看起来正确的答案,但我不确定它是否符合我的要求.

for g in range(len(rate)):
    rate[g] = rate[g] * (amount[g] / sum(amount))
rate = sum(rate)
Run Code Online (Sandbox Code Playgroud)

编辑:在与我的代码比较其他回复后,我决定使用邮政编码,以尽可能缩短.

Aka*_*all 23

您可以numpy.average用来计算加权平均值.

In [13]: import numpy as np

In [14]: rate = [14.424, 14.421, 14.417, 14.413, 14.41]

In [15]: amount = [3058.0, 8826.0, 56705.0, 30657.0, 12984.0]

In [17]: weighted_avg = np.average(rate, weights=amount)

In [19]: weighted_avg
Out[19]: 14.415602815646439
Run Code Online (Sandbox Code Playgroud)

  • Numpy 是_事实上的_标准库 (2认同)

Jun*_*sor 16

for g in range(len(rate)):
   rate[g] = rate[g] * amount[g] / sum(amount)
rate = sum(rate)
Run Code Online (Sandbox Code Playgroud)

是相同的:

sum(rate[g] * amount[g] / sum(amount) for g in range(len(rate)))
Run Code Online (Sandbox Code Playgroud)

这与:

sum(rate[g] * amount[g] for g in range(len(rate))) / sum(amount)
Run Code Online (Sandbox Code Playgroud)

这与:

sum(x*y表示x,y表示拉链(费率,金额))/总和(金额)

结果:

14.415602815646439
Run Code Online (Sandbox Code Playgroud)


maa*_*ahl 8

这看起来像加权平均值.

values = [1, 2, 3, 4, 5]
weights = [2, 8, 50, 30, 10]

s = 0
for x, y in zip(values, weights):
    s += x * y

average = s / sum(weights)
print(average) # 3.38
Run Code Online (Sandbox Code Playgroud)

这个输出3.38确实更倾向于具有最高权重的值.