scipy.stats.

pmean#

scipy.stats.pmean(a, p, *, axis=0, dtype=None, weights=None, nan_policy='propagate', keepdims=False)[源码]#

沿指定轴计算加权幂均值。

与权重 \(w_i\) 关联的数组 \(a_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 时,它返回几何均值。

此均值亦称为广义均值或Hölder均值,不要与也称为准算术均值或广义f均值的Kolmogorov广义均值混淆 [3]

参数:
aarray_like

输入数组、掩码数组或可转换为数组的对象。

pint或float

指数。

axisint或None,默认值:0

如果为int,则为沿其计算统计数据的输入轴。输入的每个轴分隔片(例如行)的统计数据将显示在输出的对应元素中。如果None,则在计算统计数据之前,输入将被展平。

dtypedtype,可选

返回数组和对元素求和的累加器的类型。如果未指定dtype,则其默认为a的dtype,除非a的整数dtype的精度低于默认平台整数的精度。在这种情况下,将使用默认平台整数。

weightsarray_like,可选

权重数组可以是1-D(在这种情况下,其长度必须是沿给定axisa的大小),也可以与a具有相同的形状。默认值为None,给每个值赋予权重1.0。

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

定义如何处理输入NaN。

  • propagate:如果沿其计算统计数据的轴分隔片(例如行)中存在NaN,则输出的对应条目将为NaN。

  • omit:在执行计算时,将忽略NaN。如果沿其计算统计数据的轴分隔片中剩余的数据不足,则输出的对应条目将为NaN。

  • raise:如果存在NaN,则将引发ValueError

keepdimsbool,默认值:False

如果将其设置为True,则缩小的轴将作为尺寸大小为1保留在结果中。利用此选项,结果将针对输入数组正确进行广播。

返回:
pmeanndarray,参阅以上dtype参数。

包含幂均值值的输出数组。

另请参阅

numpy.average

加权平均值

gmean

几何平均值

hmean

调和平均值

说明

幂平均值在一个维的输入数组中的计算,axis=0 默认为每一个维,或所有数组中的值对应 axis=None。float64 中间值和返回值用于整数输入。

在版本 1.9 中添加。

从 SciPy 1.9 开始,np.matrix 输入(不推荐用于新代码)在进行计算之前都将转换成 np.ndarray。在这个情况下,输出将是标量或 np.ndarray 对应得当的形状而不是 2D np.matrix。类似的,忽略带掩码数组的掩码元素,输出将是标量或 np.ndarray 而不是一个带 mask=False 的掩码数组。

引用

[1]

“广义平均”,维基百科https://en.wikipedia.org/wiki/Generalized_mean

[2]

诺里斯,N., “广义平均值函数的凸性”,数理统计年鉴,vol. 8 页 118-120,1937

[3]

布伦,P.S.,均值手册及不等式,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