为什么numpy计算weighted average得到的结果与预期不一致?
计算结果不符的原因
加权平均的标准计算逻辑为:分子是各数值与对应权重的乘积之和,分母是所有权重的总和,而非数值数组的元素数量,numpy的np.average方法带weights参数时严格遵循该规则计算。
具体计算验证:
- 数值数组:
a = [1,2,3,4] - 权重数组:
wts = [1,2,3,4] - 乘积和(分子):
1*1 + 2*2 + 3*3 + 4*4 = 30 - 权重总和(分母):
1+2+3+4 = 10 - 最终加权平均结果:
30 / 10 = 3.0,和numpy输出完全一致,方法本身无错误。
你自行计算得到的7.5不符合加权平均的定义,错误原因是将分母取值为数组元素个数4,而非权重总和。如果你的业务场景确实需要按该逻辑计算结果,可以直接使用如下代码实现,不需要调用带权重参数的np.average:
import numpy as np a = np.array([1,2,3,4]) wts = np.array([1,2,3,4]) print(np.sum(a * wts) / len(a))
内容的提问来源于stack exchange,提问作者qg_java_17137
相关产品推荐
相关产品推荐

