numpy.ma.average#
- ma.average(a, axis=None, weights=None, returned=False, *, keepdims=<no value>)[源代码]#
返回给定轴上数组的加权平均值。
- 参数:
- a类似数组
要平均的数据。计算中不考虑掩码条目。
- axisNone 或 int 或整数元组,可选
对 a 进行平均的轴或轴。默认值 axis=None 将对输入数组的所有元素进行平均。如果 axis 是一个整数元组,则平均操作将在元组中指定的所有轴上执行,而不是像以前那样在单个轴或所有轴上执行。
- weights类似数组,可选
与 a 中的值关联的权重数组。 a 中的每个值都根据其关联的权重对平均值做出贡献。如果未指定轴,则权重数组的形状必须与 a 相同;否则,权重必须沿指定轴与 a 的维度和形状保持一致。如果 weights=None,则 a 中的所有数据都被假定为权重等于一。计算方式为
avg = sum(a * weights) / sum(weights)
其中和是对所有包含的元素求和。对 weights 值的唯一限制是 sum(weights) 不能为 0。
- returned布尔值,可选
标志,指示是否应以元组
(结果, 权重之和)
的形式返回输出 (True),还是仅返回结果 (False)。默认值为 False。- keepdims布尔值,可选
如果设置为 True,则被缩减的轴将作为大小为一的维度保留在结果中。使用此选项,结果将与原始 a 正确广播。 注意: keepdims 不适用于
numpy.matrix
的实例或其方法不支持 keepdims 的其他类。1.23.0 版本新增。
- 返回:
- 抛出:
- ZeroDivisionError
当沿轴的所有权重都为零时。请参阅
numpy.ma.average
以获取对此类错误更健壮的版本。- TypeError
当 weights 与 a 的形状不同,且 axis=None 时。
- ValueError
当 weights 的维度和形状与指定 axis 上 a 的维度和形状不一致时。
示例
>>> import numpy as np >>> a = np.ma.array([1., 2., 3., 4.], mask=[False, False, True, True]) >>> np.ma.average(a, weights=[3, 1, 0, 0]) 1.25
>>> x = np.ma.arange(6.).reshape(3, 2) >>> x masked_array( data=[[0., 1.], [2., 3.], [4., 5.]], mask=False, fill_value=1e+20) >>> data = np.arange(8).reshape((2, 2, 2)) >>> data array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.ma.average(data, axis=(0, 1), weights=[[1./4, 3./4], [1., 1./2]]) masked_array(data=[3.4, 4.4], mask=[False, False], fill_value=1e+20) >>> np.ma.average(data, axis=0, weights=[[1./4, 3./4], [1., 1./2]]) Traceback (most recent call last): ... ValueError: Shape of weights must be consistent with shape of a along specified axis.
>>> avg, sumweights = np.ma.average(x, axis=0, weights=[1, 2, 3], ... returned=True) >>> avg masked_array(data=[2.6666666666666665, 3.6666666666666665], mask=[False, False], fill_value=1e+20)
当
keepdims=True
时,以下结果的形状为 (3, 1)。>>> np.ma.average(x, axis=1, keepdims=True) masked_array( data=[[0.5], [2.5], [4.5]], mask=False, fill_value=1e+20)