为什么加权平均会得到意想不到的结果?

Why the weighted average get unintended result?

我们知道 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

根据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]