Подтвердить что ты не робот

Np.mean() vs np.average() в Python NumPy?

Я замечаю, что

In [30]: np.mean([1, 2, 3])
Out[30]: 2.0

In [31]: np.average([1, 2, 3])
Out[31]: 2.0

Однако должны быть некоторые различия, поскольку в конце концов они представляют собой две разные функции.

Каковы различия между ними?

4b9b3361

Ответ 1

np.average принимает необязательный параметр веса. Если он не поставляется, они эквивалентны. Взгляните на исходный код: Среднее, Среднее

np.mean:

try:
    mean = a.mean
except AttributeError:
    return _wrapit(a, 'mean', axis, dtype, out)
return mean(axis, dtype, out)

np.average:

...
if weights is None :
    avg = a.mean(axis)
    scl = avg.dtype.type(a.size/avg.size)
else:
    #code that does weighted mean here

if returned: #returned is another optional argument
    scl = np.multiply(avg, 0) + scl
    return avg, scl
else:
    return avg
...

Ответ 2

np.mean всегда вычисляет среднее арифметическое и имеет некоторые дополнительные параметры для ввода и вывода (например, какие типы данных использовать, где разместить результат).

np.average может вычислять средневзвешенное значение, если задан параметр weights.

Ответ 3

В некоторой версии numpy есть еще одна важная разница, о которой вы должны знать:

average не принимают маски учета, поэтому вычисляйте среднее значение по всему набору данных.

mean принимает маски учета, поэтому вычисляет среднее значение только по незамасленным значениям.

g = [1,2,3,55,66,77]
f = np.ma.masked_greater(g,5)

np.average(f)
Out: 34.0

np.mean(f)
Out: 2.0

Ответ 4

В вашем вызове две функции одинаковы.

average может вычислять средневзвешенное значение.

Связи Doc: mean и average