我想计算一组角度的加权平均值。
在this Question中,有一个答案如何计算均值 如this page所示。
现在我想弄清楚如何计算加权平均值。 也就是说,对于每个角度,存在权重(权重总和为1)
0.25,0度 0.5,20度 0.25,90度
加权平均应该(如果我没有犯错)是32度。
答案 0 :(得分:4)
好的,我的尝试是将值乘以权重:
def circular_mean(weights, angles):
x = y = 0.
for angle, weight in zip(angles, weights):
x += math.cos(math.radians(angle)) * weight
y += math.sin(math.radians(angle)) * weight
mean = math.degrees(math.atan2(y, x))
return mean
Ir SEEMS 工作正常。我必须考虑良好测试数据。
答案 1 :(得分:1)
根据您的应用,问题有不同的答案。如上所述,您可能需要标准化您的值,您可能需要签名角度,或者您可能不希望。除非你知道角度生成函数是什么,否则可能没有一个独特的答案。
对我来说这是一个足够的问题(在几何学中工作)我编写了自己的Angle类。