Verwenden Sie Pythons SciPy, um den harmonischen Durchschnitt zu ermitteln. Installieren Sie zuerst SciPy.
Wenn alle Berechnungsziele keine Werte größer als 0 sind (positive reelle Zahlen), wird eine Ausnahme ausgelöst. Negative Zahlen reduzieren den Nenner und führen zu großen harmonisierten Durchschnittswerten. Wenn beispielsweise der harmonisierte Durchschnitt von 3, -3,4 gemäß der Formel berechnet wird, beträgt er 12. Solche Werte können nicht verwendet werden.
harmonic_mean1.py
from scipy import stats
# 1, 2,Harmonischer Durchschnitt von 4 ⇒ 1.71428571429
print stats.hmean([1, 2, 4])
# 1, 0.5, 2.0,Harmonischer Durchschnitt von 10 ⇒ 1.11111111111
print stats.hmean([1, 0.5, 2.0, 10])
#Danach ein Beispiel für den Versuch eines negativen Wertes
# 3,-3,Harmonisierter Durchschnitt von 4 ⇒ Wertfehler: Harmonic mean only defined if all elements greater than zero
print stats.hmean([3, -3, 4])
#Bei Berechnung nach der Formel des harmonisierten Mittelwerts ⇒ 12 Werte erhöht!?Nein, es ist ein ungültiger Wert.
print(3 / ((1 / 3.0) + (1 / -3.0) + (1 / 4.0)))
harmonic_mean2.py
from scipy import stats
HM_OFFSET = 0.0001
def custom_hmean(values_list):
u"""Wrapper mit Ausnahmen zur harmonischen Durchschnittsfunktion."""
#Wenn alle berechneten Werte Keine sind, setzen Sie den harmonisierten Durchschnitt auf Keine.
if values_list[0] is None and\
values_list == [values_list[0]] * len(values_list):
return None
#Wenn alle berechneten Werte 0 oder weniger sind, wird der Harmonie-Durchschnitt auf 0 gesetzt.
if max(values_list) <= 0:
return 0
#Wenn der zu berechnende Wert Keine ist, wird davon ausgegangen, dass keine Daten vorhanden sind, und wenn er 0 oder weniger ist, wird HM verwendet_Auf den Wert von OFFSET setzen
return stats.hmean(
[v if v > 0 else HM_OFFSET for v in values_list if v is not None])
print custom_hmean([3, 0, 4]) # 0.000299982501021
print custom_hmean([3, None, 4]) # 3.42857142857
print custom_hmean([0, -1, -2, -3]) # 0
print custom_hmean([0, -1, -2, 1]) # 0.000133328889037
print custom_hmean([0, 0, 1, 0]) # 0.000133328889037
print custom_hmean([None, None, 1, None]) # 1.0
print custom_hmean([None, None, None, None]) # None
print custom_hmean([0, 0, 0, 0]) # 0
Details zu scipy.stats.hmean Englisch Die Formel des Harmonie-Durchschnitts finden Sie in Wikipedia ⇒ Harmonie-Durchschnitt Ist die Umkehrung des arithmetischen Mittelwerts der Umkehrung
Recommended Posts