【问题标题】:Why the weighted average get unintended result?为什么加权平均会得到意想不到的结果?
【发布时间】:2021-12-06 12:10:36
【问题描述】:

我们知道weighted average 公式是:

所以,当我使用 numpy 时:

a = np.array([1,2,3,4])

wts = np.array([1,2,3,4])
print(np.average(a, weights=wts))

应该是:

np.sum([1*1, 2*2, 3*3, 4*4]) / 4   # 7.5 

但为什么要得到3.0

【问题讨论】:

  • 加权平均公式的分母应该是权重之和,以便任何常数的平均值等于该常数。

标签: numpy weighted-average


【解决方案1】:

根据average的文档,平均值是

avg = sum(a * weights) / sum(weights)

如果你想除以权重而不是总和,你可以简单地做

a = np.array([1,2,3,4])
wts = np.array([1,2,3,4])

np.dot(a,wts) / wts.shape[0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 2023-04-08
    • 2011-07-06
    相关资源
    最近更新 更多