dask.array.average

dask.array.average

dask.array.average(a, axis=None, weights=None, returned=False, keepdims=False)[源代码]

计算沿指定轴的加权平均值。

此文档字符串是从 numpy.average 复制的。

Dask 版本可能存在一些不一致性。

参数
aarray_like

包含要进行平均的数据的数组。如果 a 不是数组,则会尝试进行转换。

None 或 int 或 int 的元组,可选

沿其计算 a 平均值的轴或轴。默认情况下,axis=None 将对输入数组的所有元素进行平均。如果轴为负数,则从最后一个轴向第一个轴计数。

1.7.0 新版功能.

如果 axis 是一个整数元组,则会在元组中指定的所有轴上进行平均,而不是像之前那样仅在一个轴或所有轴上进行。

权重类似数组, 可选

a 中的值相关联的权重数组。a 中的每个值根据其关联的权重对平均值做出贡献。如果没有指定轴,权重数组必须与 a 具有相同的形状,否则权重必须在与 a 指定的轴上具有一致的维度和形状。如果 weights=None,则假定 a 中的所有数据具有等于一的权重。计算如下:

avg = sum(a * weights) / sum(weights)

其中求和是针对所有包含的元素。weights 的值的唯一约束是 sum(weights) 不能为 0。

返回的bool, 可选

默认值为 False。如果为 True,则返回元组 (average, sum_of_weights),否则仅返回平均值。如果 weights=Nonesum_of_weights 等同于取平均值的元素数量。

keepdimsbool, 可选

如果设置为 True,被减少的轴将作为尺寸为1的维度保留在结果中。使用此选项,结果将正确地与原始 a 进行广播。注意: keepdims 将无法与 numpy.matrix 或其他不支持 keepdims 的方法的类实例一起工作。

1.23.0 新版功能.

返回
返回值, [权重之和]array_type 或 double

返回沿指定轴的平均值。当 returnedTrue 时,返回一个元组,第一个元素为平均值,第二个元素为权重的和。sum_of_weightsretval 类型相同。结果的 dtype 遵循一般模式。如果 weights 为 None,结果的 dtype 将是 a 的 dtype,或者如果 a 是整数则为 float64。否则,如果 weights 不为 None 且 a 为非整数,结果类型将是能够表示 aweights 值的最低精度的类型。如果 a 恰好是整数,则仍适用前面的规则,但结果 dtype 至少为 float64

Raises
ZeroDivisionError

当沿轴的所有权重均为零时。请参阅 numpy.ma.average 以获取对此类错误具有鲁棒性的版本。

类型错误

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.