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

## 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.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
...
``````

`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.

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

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]