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

I notice that

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

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

However, there should be some differences, since after all they are two different functions.

What are the differences between them?

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

From: stackoverflow.com/q/20054243