numpy.average#
- numpy.average(a, axis=None, weights=None, returned=False, *, keepdims=<no value>)[源]#
计算指定轴上的加权平均值。
- 参数:
- a类数组
包含待平均数据的数组。如果 a 不是数组,则尝试进行转换。
- axisNone 或 int 或 int 元组,可选
用于计算 a 平均值的轴或多个轴。默认值 axis=None 将对输入数组的所有元素进行平均。如果轴为负值,则从最后一个轴开始计数到第一个轴。如果轴是一个整数元组,则对元组中指定的所有轴进行平均,而不是像以前那样对单个轴或所有轴进行平均。
- weights类数组,可选
与 a 中的值相关联的权重数组。 a 中的每个值根据其关联的权重对平均值做出贡献。如果没有指定轴,权重数组必须与 a 具有相同的形状;否则,权重必须在指定轴上与 a 的维度和形状一致。如果 weights=None,则 a 中的所有数据都被假定具有等于一的权重。计算公式为
avg = sum(a * weights) / sum(weights)
其中求和是对所有包含的元素进行的。 weights 值的唯一约束是 sum(weights) 不得为 0。
- returned布尔值,可选
默认为 False。如果为 True,则返回元组 (
average
, sum_of_weights),否则只返回平均值。如果 weights=None,则 sum_of_weights 等同于计算平均值的元素数量。- keepdims布尔值,可选
如果设置为 True,则被缩减的轴将作为大小为一的维度保留在结果中。使用此选项,结果将与原始 a 正确广播。注意: keepdims 不适用于
numpy.matrix
的实例或其他其方法不支持 keepdims 的类。1.23.0 版新增。
- 返回:
- 返回值, [sum_of_weights]array_type 或 double
返回指定轴上的平均值。当 returned 为 True 时,返回一个元组,其中平均值为第一个元素,权重之和为第二个元素。sum_of_weights 的类型与 retval 相同。结果的数据类型遵循一般模式。如果 weights 为 None,结果数据类型将与 a 相同,或者如果 a 是整数类型,则为
float64
。否则,如果 weights 不为 None 且 a 为非整数类型,结果类型将是能够表示 a 和 weights 值的最低精度类型。如果 a 恰好是整数类型,则之前的规则仍然适用,但结果数据类型至少将是float64
。
- 引发:
- ZeroDivisionError
当沿轴的所有权重都为零时。请参阅
numpy.ma.average
,它提供了一个对这类错误更健壮的版本。- TypeError
当 weights 与 a 的形状不一致,且 axis=None 时。
- ValueError
当 weights 的维度和形状与指定 axis 上的 a 不一致时。
另请参阅
mean
ma.average
掩码数组的平均值 – 在数据包含“缺失”值时很有用
numpy.result_type
返回将 numpy 类型提升规则应用于参数后产生的结果类型。
示例
>>> import numpy as np >>> data = np.arange(1, 5) >>> data array([1, 2, 3, 4]) >>> np.average(data) 2.5 >>> np.average(np.arange(1, 11), weights=np.arange(10, 0, -1)) 4.0
>>> data = np.arange(6).reshape((3, 2)) >>> data array([[0, 1], [2, 3], [4, 5]]) >>> np.average(data, axis=1, weights=[1./4, 3./4]) array([0.75, 2.75, 4.75]) >>> np.average(data, weights=[1./4, 3./4]) Traceback (most recent call last): ... TypeError: Axis must be specified when shapes of a and weights differ.
当
keepdims=True
时,以下结果的形状为 (3, 1)。>>> np.average(data, axis=1, keepdims=True) array([[0.5], [2.5], [4.5]])
>>> data = np.arange(8).reshape((2, 2, 2)) >>> data array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) >>> np.average(data, axis=(0, 1), weights=[[1./4, 3./4], [1., 1./2]]) array([3.4, 4.4]) >>> np.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.