hmean#
- scipy.stats.mstats.hmean(a, ось=0, dtype=None, *, веса=None, nan_policy='propagate', keepdims=False)[источник]#
Вычислить взвешенное среднее гармоническое вдоль указанной оси.
Взвешенное среднее гармоническое массива \(a_i\) связанные с весами \(w_i\) равен:
\[\frac{ \sum_{i=1}^n w_i }{ \sum_{i=1}^n \frac{w_i}{a_i} } \, ,\]и, с равными весами, это даёт:
\[\frac{ n }{ \sum_{i=1}^n \frac{1}{a_i} } \, .\]- Параметры:
- aarray_like
Входной массив, маскированный массив или объект, который можно преобразовать в массив.
- осьint или None, по умолчанию: 0
Если это целое число, ось входных данных, по которой вычисляется статистика. Статистика каждого среза по оси (например, строки) входных данных появится в соответствующем элементе вывода. Если
None, вход будет сведён в одномерный массив перед вычислением статистики.- dtypedtype, опционально
Тип возвращаемого массива и аккумулятора, в котором суммируются элементы. Если dtype не указан, по умолчанию используется dtype a, если только a имеет целочисленный dtype с точностью меньше, чем у целочисленного типа по умолчанию на платформе. В этом случае используется целочисленный тип по умолчанию на платформе.
- весаarray_like, необязательный
Массив весов может быть одномерным (в этом случае его длина должна быть равна размеру a вдоль заданной ось) или той же формы, что и a. По умолчанию None, что присваивает каждому значению вес 1.0.
Добавлено в версии 1.9.
- nan_policy{‘propagate’, ‘omit’, ‘raise’}
Определяет, как обрабатывать входные значения NaN.
propagate: если NaN присутствует в срезе оси (например, строке), вдоль которой вычисляется статистика, соответствующая запись вывода будет NaN.omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.raise: если присутствует NaN, тоValueErrorбудет вызвано исключение.
- keepdimsbool, по умолчанию: False
Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.
- Возвращает:
- hmeanndarray
См. dtype параметр выше.
Смотрите также
numpy.meanСреднее арифметическое
numpy.averageВзвешенное среднее
gmeanСреднее геометрическое
Примечания
Выборочное гармоническое среднее — это величина, обратная среднему арифметическому обратных величин наблюдений.
Среднее гармоническое вычисляется по одному измерению входного массива, по умолчанию axis=0, или по всем значениям в массиве, если axis=None. Для целочисленных входных данных используются промежуточные значения и возвращаемые значения типа float64.
Среднее гармоническое определено только если все наблюдения неотрицательны; в противном случае результат NaN.
Начиная с SciPy 1.9,
np.matrixвходные данные (не рекомендуется для нового кода) преобразуются вnp.ndarrayперед выполнением вычисления. В этом случае результатом будет скаляр илиnp.ndarrayподходящей формы вместо 2Dnp.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр илиnp.ndarrayвместо маскированного массива сmask=False.hmeanимеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окруженияSCIPY_ARRAY_API=1и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).Библиотека
CPU
GPU
NumPy
✅
н/д
CuPy
н/д
✅
PyTorch
✅
✅
JAX
⚠️ нет JIT
⚠️ нет JIT
Dask
⚠️ вычисляет граф
н/д
См. Поддержка стандарта array API для получения дополнительной информации.
Ссылки
[1]“Взвешенное гармоническое среднее”, Википедия, https://en.wikipedia.org/wiki/Harmonic_mean#Weighted_harmonic_mean
[2]Ferger, F., «Природа и использование среднего гармонического», Journal of the American Statistical Association, том 26, стр. 36-40, 1931
Примеры
>>> from scipy.stats import hmean >>> hmean([1, 4]) 1.6000000000000001 >>> hmean([1, 2, 3, 4, 5, 6, 7]) 2.6997245179063363 >>> hmean([1, 4, 7], weights=[3, 1, 3]) 1.9029126213592233