dask.array.ma.average
dask.array.ma.average¶
- dask.array.ma.average(a, axis=None, weights=None, returned=False, keepdims=False)[源代码]¶
返回数组在给定轴上的加权平均值。
此文档字符串是从 numpy.ma.average 复制而来的。
Dask 版本可能存在一些不一致性。
- 参数
- aarray_like
要进行平均的数据。被掩码的条目在计算中不被考虑。
- 轴None 或 int 或 int 的元组,可选
沿其计算 a 平均值的轴或轴。默认情况下,axis=None,将对输入数组的所有元素进行平均。如果 axis 是一个整数元组,则在该元组指定的所有轴上进行平均,而不是像之前那样只在一个轴或所有轴上进行平均。
- 权重类似数组, 可选
与 a 中的值相关联的权重数组。a 中的每个值根据其关联的权重对平均值做出贡献。如果没有指定轴,权重数组必须与 a 具有相同的形状,否则权重必须在与 a 指定的轴上具有一致的维度和形状。如果 weights=None,则假定 a 中的所有数据具有等于一的权重。计算如下:
avg = sum(a * weights) / sum(weights)
其中求和是针对所有包含的元素。weights 的值的唯一约束是 sum(weights) 不能为 0。
- 返回的bool, 可选
指示是否应将元组
(结果, 权重之和)
作为输出返回(True),或者仅返回结果(False)。默认值为 False。- keepdimsbool, 可选
如果设置为 True,被减少的轴将作为尺寸为1的维度保留在结果中。使用此选项,结果将正确地与原始 a 进行广播。注意: keepdims 将无法与 numpy.matrix 或其他不支持 keepdims 的方法的类实例一起工作。
1.23.0 新版功能.
- 返回
- 平均值, [权重之和](元组) 标量或 MaskedArray
沿指定轴的平均值。当返回值为 True 时,返回一个元组,第一个元素为平均值,第二个元素为权重的和。返回类型为 np.float64,如果 a 是整数类型且浮点数小于 float64,或者为输入的数据类型,否则。如果返回,sum_of_weights 总是 float64。
- Raises
- ZeroDivisionError
当沿轴的所有权重均为零时。请参阅 numpy.ma.average 以获取对此类错误具有鲁棒性的版本。
- 类型错误
当 weights 的形状与 a 不同时,且 axis=None。
- ValueError
当 weights 没有与 a 沿指定 axis 一致的维度和形状时。
示例
>>> 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)