加权平均值使用numpy.average

The*_*tor 5 python numpy average weighted-average python-2.7

我有一个数组:

In [37]: bias_2e13 # our array
Out[37]: 
[1.7277990734072355,
 1.9718263893212737,
 2.469657573252167,
 2.869022991373125,
 3.314720313010104,
 4.232269039271717]
Run Code Online (Sandbox Code Playgroud)

数组中每个值的错误是:

In [38]: bias_error_2e13 # the error on each value
Out[38]: 
array([ 0.13271387,  0.06842465,  0.06937965,  0.23886647,  0.30458249,
        0.57906816])
Run Code Online (Sandbox Code Playgroud)

现在我将每个值的误差除以2:

In [39]: error_half # error divided by 2
Out[39]: 
array([ 0.06635694,  0.03421232,  0.03468982,  0.11943323,  0.15229124,
        0.28953408])
Run Code Online (Sandbox Code Playgroud)

现在我numpy.average使用errorsas 计算数组的平均值,但是使用as weights.

首先,我使用值的完整错误,然后我使用错误的一半,即错误除以2.

In [40]: test = np.average(bias_2e13,weights=bias_error_2e13)

In [41]: test_2 = np.average(bias_2e13,weights=error_half)
Run Code Online (Sandbox Code Playgroud)

当一个数组的错误是另一个数组的一半时,两个平均值如何给出相同的结果

In [42]: test
Out[42]: 3.3604746813456936

In [43]: test_2
Out[43]: 3.3604746813456936
Run Code Online (Sandbox Code Playgroud)

mir*_*ulo 20

因为所有错误都具有相同的相对权重.提供weight参数不会改变您平均的实际值,它只是表示每个值对平均值的贡献权重.换句话说,在将通过其相应权重的每个值相乘之后,np.average除以所提供的权重之和.

>>> import numpy as np
>>> np.average([1, 2, 3], weights=[0.2, 0.2, 0.2])
2.0
>>> np.average([1, 2, 3])
2.0
Run Code Online (Sandbox Code Playgroud)

实际上,一个n类似数组的容器的平均公式是

                                在此输入图像描述

其中假设每个权重在未提供时等于1 numpy.average.