在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
?
你会如何去寻找一组数字,这可能是蟒蛇正或负的调和平均数?
调和平均值仅为组正实数的定义。 如果你试图计算它集与底片你得到各种奇怪的和无用的结果,即使你不通过0。例如打DIV,应用公式设定的(3,-3,4)给出的平均12!
你可以只用调和平均的定义公式:
len(a) / np.sum(1.0/a)
但是,维基百科说,调和平均数为正实数定义:
http://en.wikipedia.org/wiki/Harmonic_mean
有一个统计库,如果你正在使用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)
它有其他的方法太像标准偏差,方差,模式,平均值,中位数等,这是太有用了。
调和平均数的数学定义本身并不禁止应用程序负数(虽然你可能不希望计算的+1和-1调和平均值),但是,它的目的是计算平均的数量一样比例,这样它会给予相等的权重,以每个数据点,而在运算装置或极端的数据点的这样的比率将获得高得多的重量,因此是不希望的。
所以,你要么可以尝试自己硬编码的定义,就像@HYRY建议,或者在错误的上下文可能应用调和平均数。