2016-07-07 6 views
2

У меня есть массив:Средневзвешенное с использованием numpy.average

In [37]: bias_2e13 # our array 
Out[37]: 
[1.7277990734072355, 
1.9718263893212737, 
2.469657573252167, 
2.869022991373125, 
3.314720313010104, 
4.232269039271717] 

Ошибка каждого значения в массиве:

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]) 

Теперь я делю ошибку на каждое значение на 2:

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

Теперь я вычислить среднее значение массива с помощью numpy.average, но с использованием в качестве errorsweights.

Во-первых, я использую полную ошибку значения, то я использую половину ошибки , то есть ошибка делится на 2.

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

In [41]: test_2 = np.average(bias_2e13,weights=error_half) 

Как и средние дают мне тот же результат когда один массив имеет ошибки, которые в два раза меньше, чем у другого?

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

In [43]: test_2 
Out[43]: 3.3604746813456936 

ответ

10

Поскольку все ошибки имеют одинаковый относительный вес. При поставке параметра 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 

Эффективно, средняя формула для n-мерного массива n типа контейнера

                                                          enter image description here

, где предполагается, каждый весовой коэффициент равным 1, если не предусмотрено, чтобы numpy.average.

0

От scipy.org about numpy average: «Массив весов, связанных со значениями в a. Каждое значение в a вносит вклад в среднее значение в соответствии с его весом». Это означает, что ошибки вносят вклад в среднее значение! Таким образом, умножение эрров с одним и тем же фактором ничего не меняет! Попробуйте умножить, например, только первую ошибку с 0.5, и вы получите другой результат.