numpy.average#
- numpy.average(a, axis=None, weights=None, returned=False, *, keepdims=<no value>)[源代码]#
计算沿指定轴的加权平均值.
- 参数:
- aarray_like
包含要平均的数据的数组.如果 a 不是数组,则尝试进行转换.
- axisNone 或 int 或 int 的元组,可选
沿其平均 a 的轴或轴.默认情况下,`axis=None`,将对输入数组的所有元素进行平均.如果轴为负数,则从最后一个轴计数到第一个轴.
在 1.7.0 版本加入.
如果 axis 是一个整数的元组,则在前述的单个轴或所有轴上进行平均操作,而是在元组中指定的所有轴上进行平均操作.
- weightsarray_like, 可选
与 a 中的值相关联的权重数组.`a` 中的每个值根据其关联的权重对平均值做出贡献.如果未指定轴,则权重数组必须与 a 具有相同的形状,否则权重必须在与 a 指定的轴上具有一致的维度和形状.如果 weights=None,则假定 a 中的所有数据具有等于一的权重.计算如下:
avg = sum(a * weights) / sum(weights)
其中总和是所有包含元素的总和.对 weights 值的唯一约束是 sum(weights) 不能为 0.
- returnedbool, 可选
默认是 False.如果 True,则返回元组 (
average
, sum_of_weights),否则只返回平均值.如果 weights=None,`sum_of_weights` 等同于取平均值的元素数量.- keepdimsbool, 可选
如果设置为 True,被减少的轴将作为尺寸为1的维度保留在结果中.使用此选项,结果将正确地与原始 a 广播.*注意:* keepdims 将无法与
numpy.matrix
或其他方法不支持 keepdims 的类的实例一起使用.在 1.23.0 版本加入.
- 返回:
- retval, [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 没有与 a 沿指定 axis 一致的维度和形状时.
参见
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.