Zac*_*ach 13 python math statistics mean scipy
Python(scipy.stats.hmean
)中的Harmonic Mean函数要求输入为正数.
例如:
from scipy import stats
print stats.hmean([ -50.2 , 100.5 ])
Run Code Online (Sandbox Code Playgroud)
结果是:
ValueError: Harmonic mean only defined if all elements greater than zero
Run Code Online (Sandbox Code Playgroud)
我没有在数学上看到为什么会出现这种情况,除了罕见的情况,你最终将除以零.不是检查除以零,而是hmean()
在输入任何正数时抛出错误,无论是否可以找到调和平均值.
我在数学中遗漏了什么吗?或者这真的是一个限制SciPy
吗?
你如何找到一组数字的调和平均值,这些数字在python中可能是正数还是负数?
ver*_*ald 29
调和平均值仅针对正实数组定义.如果你尝试计算带有负数的集合,即使你没有将div命中为0,你也会得到各种奇怪和无用的结果.例如,将公式应用于集合(3,-3,4)给出了一个平均值12!
HYR*_*YRY 12
你可以使用Harmonic Mean定义方程:
len(a) / np.sum(1.0/a)
Run Code Online (Sandbox Code Playgroud)
但是,维基百科说,调和均值是为正实数定义的:
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)
Run Code Online (Sandbox Code Playgroud)
它也有其他方法,如stdev,方差,众数,均值,中位数等,这些方法也非常有用。