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подходящей формы вместо 2Dnp.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