import statistics # Новое в Python 3.6. statistics.harmonic_mean(data, weights=None)
data
- данные, последовательность или итерация.weights=None
- веса данных, последовательность или итерация (доступно с версии Python 3.10).data
.Функция harmonic_mean()
модуля statistics
возвращает среднее гармоническое значение числовой последовательности. Если веса weights
опущены или None
, то предполагается равный вес.
data
может быть последовательностью или итерацией. data
пусты или любой элемент меньше нуля, то возникает ошибка StatisticsError
.Среднее гармоническое, иногда называемое субконтрарным средним, является обратной величиной среднего арифметического mean() взаимных значений данных. Например, среднее гармоническое трех значений a
, b
и c
будет эквивалентно 3/(1/a + 1/b + 1/c)
. Если одно из значений равно нулю, то результат то же будет равен нулю.
Среднее гармоническое - это тип среднего, мера центрального расположения данных. Это значение часто уместно при усреднении скоростей или коэффициентов.
Рассмотрим на примере. Предположим, что автомобиль проезжает 10 км со скоростью 40 км/ч, а затем еще 10 км со скоростью 60 км/ч. Какова средняя скорость?
>>> import statistics >>> statistics.harmonic_mean([40, 60]) # 48.0
Теперь предположим, что автомобиль движется со скоростью 40 км/ч на протяжении 5 км, а когда движение становится свободным, развивает скорость до 60 км/час на оставшиеся 30 км пути. Какая средняя скорость?
>>> import statistics >>> statistics.harmonic_mean([40, 60], weights=[5, 30]) # 56.0
Еще пример. Предположим, что инвестор приобретает равную стоимость акций в каждой из трех компаний, при этом коэффициент P/E
(цена/доход) составляет 2.5, 3 и 10. Каково среднее соотношение P/E
для портфеля инвестора?
>>> import statistics # Для равного инвестиционного портфеля. >>> statistics.harmonic_mean([2.5, 3, 10]) # For an equal investment portfolio. # 3.6
Текущий алгоритм имеет ранний выход, когда он сталкивается с нулем на входе. Это означает, что последующие входные данные не проверяются на валидность. Такое поведение может измениться в будущем.
Изменено в Python 3.10: Добавлена поддержка весов.