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)
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)
这看起来像加权平均值.
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
确实更倾向于具有最高权重的值.
归档时间: |
|
查看次数: |
24821 次 |
最近记录: |