np.mean() vs np.average() in Python NumPy? np.mean() vs np.average() in Python NumPy? python python

np.mean() vs np.average() in Python NumPy?


np.average takes an optional weight parameter. If it is not supplied they are equivalent. Take a look at the source code: Mean, Average

np.mean:

try:    mean = a.meanexcept 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 hereif returned: #returned is another optional argument    scl = np.multiply(avg, 0) + scl    return avg, sclelse:    return avg...


np.mean always computes an arithmetic mean, and has some additional options for input and output (e.g. what datatypes to use, where to place the result).

np.average can compute a weighted average if the weights parameter is supplied.


In some version of numpy there is another imporant difference that you must be aware:

average do not take in account masks, so compute the average over the whole set of data.

mean takes in account masks, so compute the mean only over unmasked values.

g = [1,2,3,55,66,77]f = np.ma.masked_greater(g,5)np.average(f)Out: 34.0np.mean(f)Out: 2.0