Compute the weighted average along the specified axis.
a : array_like
Array containing data to be averaged. If
a is not an array, a conversion is attempted.
axis : None or int or tuple of ints, optional
Axis or axes along which to average
a. The default, axis=None, will average over all of the elements of the input array. If axis is negative it counts from the last to the first axis.
If axis is a tuple of ints, averaging is performed on all of the axes specified in the tuple instead of a single axis or all the axes as before.
weights : array_like, optional
An array of weights associated with the values in
a. Each value in
a contributes to the average according to its associated weight. The weights array can either be 1-D (in which case its length must be the size of
a along the given axis) or of the same shape as
weights=None, then all data in
a are assumed to have a weight equal to one.
returned : bool, optional
True, the tuple (
sum_of_weights) is returned, otherwise only the average is returned. If
sum_of_weights is equivalent to the number of elements over which the average is taken.
retval, [sum_of_weights] : array_type or double
Return the average along the specified axis. When
True, return a tuple with the average as the first element and the sum of the weights as the second element.
sum_of_weights is of the same type as
retval. The result dtype follows a genereal pattern. If
weights is None, the result dtype will be that of
a , or
a is integral. Otherwise, if
weights is not None and
a is non- integral, the result type will be the type of lowest precision capable of representing values of both
a happens to be integral, the previous rules still applies but the result dtype will at least be
When all weights along axis are zero. See
numpy.ma.average for a version robust to this type of error.
When the length of 1D
weights is not the same as the shape of
a along axis.
- average for masked arrays – useful if your data contains “missing” values
- Returns the type that results from applying the numpy type promotion rules to the arguments.
>>> data = list(range(1,5))
[1, 2, 3, 4]
>>> np.average(range(1,11), weights=range(10,0,-1))
>>> data = np.arange(6).reshape((3,2))
>>> np.average(data, axis=1, weights=[1./4, 3./4])
array([0.75, 2.75, 4.75])
>>> np.average(data, weights=[1./4, 3./4])
Traceback (most recent call last):
TypeError: Axis must be specified when shapes of a and weights differ.
>>> a = np.ones(5, dtype=np.float128)
>>> w = np.ones(5, dtype=np.complex64)
>>> avg = np.average(a, weights=w)