在python调和平均数(harmonic mean in python)

2019-06-24 17:23发布

在Python(调和平均的函数scipy.stats.hmean )要求输入是正数。

例如:

from scipy import stats
print stats.hmean([ -50.2 , 100.5 ])

结果是:

ValueError: Harmonic mean only defined if all elements greater than zero

我不数学明白为什么这应该是这样的,除了极少数情况下,你最终会被零除。 代替由零除法检查, hmean()然后在输入查询的任何正数引发错误,调和平均是否可以发现或没有。

我在这里失去了一些东西在数学? 或者这真是一个限制SciPy

你会如何去寻找一组数字,这可能是蟒蛇正或负的调和平均数?

Answer 1:

调和平均值仅为组正实数的定义。 如果你试图计算它集与底片你得到各种奇怪的和无用的结果,即使你不通过0。例如打DIV,应用公式设定的(3,-3,4)给出的平均12!



Answer 2:

你可以只用调和平均的定义公式:

len(a) / np.sum(1.0/a) 

但是,维基百科说,调和平均数为正实数定义:

http://en.wikipedia.org/wiki/Harmonic_mean



Answer 3:

有一个统计库,如果你正在使用Python> = 3.6:

https://docs.python.org/3/library/statistics.html

您可以使用它像这意味着方法。 比方说,你有你想找到的平均数字的列表:

list = [11, 13, 12, 15, 17]
import statistics as s
s.harmonic_mean(list)

它有其他的方法太像标准偏差,方差,模式,平均值,中位数等,这是太有用了。



Answer 4:

调和平均数的数学定义本身并不禁止应用程序负数(虽然你可能不希望计算的+1和-1调和平均值),但是,它的目的是计算平均的数量一样比例,这样它会给予相等的权重,以每个数据点,而在运算装置或极端的数据点的这样的比率将获得高得多的重量,因此是不希望的。

所以,你要么可以尝试自己硬编码的定义,就像@HYRY建议,或者在错误的上下文可能应用调和平均数。



文章来源: harmonic mean in python