18

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ですか?

Python で正または負になる可能性のある一連の数値の調和平均を見つけるにはどうすればよいでしょうか?

4

4 に答える 4

32

調和平均は、正の実数のセットに対してのみ定義されます。負の数のセットに対して計算しようとすると、divを0でヒットしなくても、あらゆる種類の奇妙で役に立たない結果が得られます。たとえば、式をセット(3、-3、4)に適用すると、平均が得られます。 12の!

于 2012-05-23T03:06:42.797 に答える
16

調和平均定義式を使用できます。

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

しかし、ウィキペディアによると、調和平均は正の実数に対して定義されています。

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

于 2012-05-23T03:00:46.170 に答える
7

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)

stdev、variance、mode、mean、median などの他のメソッドもあり、これらも便利です。

于 2017-05-11T08:24:46.887 に答える
2

調和平均の数学的定義自体は、負の数への適用を禁止していません (ただし、+1 と -1 の調和平均を計算したくない場合があります)。ただし、比率などの量の平均を計算するように設計されています。各データ ポイントに等しい重みを与えますが、算術平均などでは、極端なデータ ポイントの比率が非常に高い重みを獲得するため、望ましくありません。

したがって、@HYRYが提案したように自分で定義をハードコーディングしようとするか、間違ったコンテキストで調和平均を適用した可能性があります。

于 2012-05-23T03:20:14.770 に答える