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(在这种情况下,其长度必须是沿给定axis的a的大小),也可以与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
对应得当的形状而不是 2Dnp.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