numpy.average
-
numpy.average(a, axis=None, weights=None, returned=False)
[source] -
Compute the weighted average along the specified axis.
- Parameters
-
-
aarray_like
-
Array containing data to be averaged. If
a
is not an array, a conversion is attempted. -
axisNone 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.New in version 1.7.0.
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.
-
weightsarray_like, optional
-
An array of weights associated with the values in
a
. Each value ina
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 ofa
along the given axis) or of the same shape asa
. Ifweights=None
, then all data ina
are assumed to have a weight equal to one. The 1-D calculation is:avg = sum(a * weights) / sum(weights)
The only constraint on
weights
is thatsum(weights)
must not be 0. -
returnedbool, optional
-
Default is
False
. IfTrue
, the tuple (average
,sum_of_weights
) is returned, otherwise only the average is returned. Ifweights=None
,sum_of_weights
is equivalent to the number of elements over which the average is taken.
-
- Returns
-
-
retval, [sum_of_weights]array_type or double
-
Return the average along the specified axis. When
returned
isTrue
, 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 asretval
. The result dtype follows a genereal pattern. Ifweights
is None, the result dtype will be that ofa
, orfloat64
ifa
is integral. Otherwise, ifweights
is not None anda
is non- integral, the result type will be the type of lowest precision capable of representing values of botha
andweights
. Ifa
happens to be integral, the previous rules still applies but the result dtype will at least befloat64
.
-
- Raises
-
- ZeroDivisionError
-
When all weights along axis are zero. See
numpy.ma.average
for a version robust to this type of error. - TypeError
-
When the length of 1D
weights
is not the same as the shape ofa
along axis.
See also
-
ma.average
-
average for masked arrays – useful if your data contains “missing” values
-
numpy.result_type
-
Returns the type that results from applying the numpy type promotion rules to the arguments.
Examples
>>> data = np.arange(1, 5) >>> data array([1, 2, 3, 4]) >>> np.average(data) 2.5 >>> np.average(np.arange(1, 11), weights=np.arange(10, 0, -1)) 4.0
>>> data = np.arange(6).reshape((3,2)) >>> data array([[0, 1], [2, 3], [4, 5]]) >>> 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) >>> print(avg.dtype) complex256
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.average.html