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