diff --git a/appmetrics/statistics.py b/appmetrics/statistics.py index 3c71a2d..f7318c9 100644 --- a/appmetrics/statistics.py +++ b/appmetrics/statistics.py @@ -399,7 +399,8 @@ def harmonic_mean(data): if not data: raise StatisticsError('harmonic_mean requires at least one data point') - return len(data) / sum(map(lambda x: 1.0 / x if x else 0.0, data)) + divisor = sum(map(lambda x: 1.0 / x if x else 0.0, data)) + return len(data) / divisor if divisor else 0.0 def skewness(data): diff --git a/appmetrics/tests/test_statistics.py b/appmetrics/tests/test_statistics.py index cc16348..6b34320 100644 --- a/appmetrics/tests/test_statistics.py +++ b/appmetrics/tests/test_statistics.py @@ -216,6 +216,9 @@ def test_harmonic_mean(): fun = lambda data, expected: nt.assert_almost_equal(mm.harmonic_mean(data), expected) yield fun, data, expected +def test_harmonic_mean_zero_divisor(): + assert mm.harmonic_mean([0.0]) == 0.0 + @nt.raises(StatisticsError) def test_harmonic_mean_empty(): mm.harmonic_mean([])