scipy.stats.

pmean#

scipy.stats.pmean(a, p, *, ось=0, dtype=None, веса=None, nan_policy='propagate', keepdims=False)[источник]#

Вычислить взвешенное степенное среднее вдоль указанной оси.

Взвешенное степенное среднее массива \(a_i\) связанные с весами \(w_i\) равен:

\[\left( \frac{ \sum_{i=1}^n w_i a_i^p }{ \sum_{i=1}^n w_i } \right)^{ 1 / p } \, ,\]

и, с равными весами, это даёт:

\[\left( \frac{ 1 }{ n } \sum_{i=1}^n a_i^p \right)^{ 1 / p } \, .\]

Когда p=0, он возвращает среднее геометрическое.

Это среднее также называется обобщённым средним или средним Гёльдера, и его не следует путать с обобщённым средним Колмогорова, также называемым квазиарифметическим средним или обобщённым f-средним [3].

Параметры:
aarray_like

Входной массив, маскированный массив или объект, который можно преобразовать в массив.

pint или float

Экспонента.

осьint или None, по умолчанию: 0

Если это целое число, ось входных данных, по которой вычисляется статистика. Статистика каждого среза по оси (например, строки) входных данных появится в соответствующем элементе вывода. Если None, вход будет сведён в одномерный массив перед вычислением статистики.

dtypedtype, опционально

Тип возвращаемого массива и аккумулятора, в котором суммируются элементы. Если dtype не указан, по умолчанию используется dtype a, если только a имеет целочисленный dtype с точностью меньше, чем у целочисленного типа по умолчанию на платформе. В этом случае используется целочисленный тип по умолчанию на платформе.

весаarray_like, необязательный

Массив весов может быть одномерным (в этом случае его длина должна быть равна размеру a вдоль заданной ось) или той же формы, что и a. По умолчанию None, что присваивает каждому значению вес 1.0.

nan_policy{‘propagate’, ‘omit’, ‘raise’}

Определяет, как обрабатывать входные значения NaN.

  • propagate: если NaN присутствует в срезе оси (например, строке), вдоль которой вычисляется статистика, соответствующая запись вывода будет NaN.

  • omit: NaN будут пропущены при выполнении расчета. Если в срезе оси, вдоль которого вычисляется статистика, остается недостаточно данных, соответствующая запись вывода будет NaN.

  • raise: если присутствует NaN, то ValueError будет вызвано исключение.

keepdimsbool, по умолчанию: False

Если установлено значение True, оси, которые были сокращены, остаются в результате как размерности с размером один. С этой опцией результат будет корректно транслироваться относительно входного массива.

Возвращает:
pmeanndarray, см. dtype параметр выше.

Выходной массив, содержащий значения степенного среднего.

Смотрите также

numpy.average

Взвешенное среднее

gmean

Среднее геометрическое

hmean

Среднее гармоническое

Примечания

Средняя степень вычисляется по одному измерению входного массива, axis=0 по умолчанию, или все значения в массиве, если axis=None. Для целочисленных входных данных используются промежуточные и возвращаемые значения типа float64.

Среднее степенное определено только если все наблюдения неотрицательны; в противном случае результат NaN.

Добавлено в версии 1.9.

Начиная с SciPy 1.9, np.matrix входные данные (не рекомендуется для нового кода) преобразуются в np.ndarray перед выполнением вычисления. В этом случае результатом будет скаляр или np.ndarray подходящей формы вместо 2D np.matrix. Аналогично, хотя маскированные элементы маскированных массивов игнорируются, результатом будет скаляр или np.ndarray вместо маскированного массива с mask=False.

pmean имеет экспериментальную поддержку совместимых с 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/Generalized_mean

[2]

Норрис, Н., «Свойства выпуклости обобщенных функций среднего значения», Анналы математической статистики, т. 8, стр. 118-120, 1937

[3]

Bullen, P.S., Handbook of Means and Their Inequalities, 2003

Примеры

>>> from scipy.stats import pmean, hmean, gmean
>>> pmean([1, 4], 1.3)
2.639372938300652
>>> pmean([1, 2, 3, 4, 5, 6, 7], 1.3)
4.157111214492084
>>> pmean([1, 4, 7], -2, weights=[3, 1, 3])
1.4969684896631954

Для p=-1 степенное среднее равно гармоническому среднему:

>>> pmean([1, 4, 7], -1, weights=[3, 1, 3])
1.9029126213592233
>>> hmean([1, 4, 7], weights=[3, 1, 3])
1.9029126213592233

Для p=0 степенное среднее определяется как геометрическое среднее:

>>> pmean([1, 4, 7], 0, weights=[3, 1, 3])
2.80668351922014
>>> gmean([1, 4, 7], weights=[3, 1, 3])
2.80668351922014