flopscope.numpy.average
fnp.average(a, axis=None, weights=None, returned=False, *, keepdims=<no value>)[flopscope source][numpy source]
Compute the weighted average along the specified axis.
Adapted from NumPy docs np.average
Weighted average of array elements.
Parameters
- a:array_like
Array containing data to be averaged. If
ais 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 inacontributes to the average according to its associated weight. The array of weights must be the same shape asaif no axis is specified, otherwise the weights must have dimensions and shape consistent withaalong the specified axis. Ifweights=None, then all data inaare assumed to have a weight equal to one. The calculation is:avg = sum(a * weights) / sum(weights)where the sum is over all included elements. The only constraint on the values of
weightsis thatsum(weights)must not be 0.- returned:bool, optional
Default is
False. IfTrue, the tuple (average,sum_of_weights) is returned, otherwise only the average is returned. Ifweights=None,sum_of_weightsis equivalent to the number of elements over which the average is taken.- keepdims:bool, optional
If this is set to True, the axes which are reduced are left in the result as dimensions with size one. With this option, the result will broadcast correctly against the original
a. Note:keepdimswill not work with instances of flops.matrix or other classes whose methods do not supportkeepdims.Added in version 1.23.0.
Returns
- retval, [sum_of_weights]:array_type or double
Return the average along the specified axis. When
returnedisTrue, return a tuple with the average as the first element and the sum of the weights as the second element.sum_of_weightsis of the same type asretval. The result dtype follows a general pattern. Ifweightsis None, the result dtype will be that ofa, orfloat64ifais integral. Otherwise, ifweightsis not None andais non- integral, the result type will be the type of lowest precision capable of representing values of bothaandweights. Ifahappens 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
flops.ma.averagefor a version robust to this type of error.- :TypeError
When
weightsdoes not have the same shape asa, andaxis=None.- :ValueError
When
weightsdoes not have dimensions and shape consistent withaalong specifiedaxis.
See also
- we.flops.mean
- ma.average average for masked arrays -- useful if your data contains "missing" values
- we.flops.result_type Returns the type that results from applying the numpy type promotion rules to the arguments.
Examples
>>> import flopscope.numpy as fnp
>>> data = flops.arange(1, 5)
>>> data
array([1, 2, 3, 4])
>>> flops.average(data)
2.5
>>> flops.average(flops.arange(1, 11), weights=flops.arange(10, 0, -1))
4.0>>> data = flops.arange(6).reshape((3, 2))
>>> data
array([[0, 1],
[2, 3],
[4, 5]])
>>> flops.average(data, axis=1, weights=[1./4, 3./4])
array([0.75, 2.75, 4.75])
>>> flops.average(data, weights=[1./4, 3./4])
Traceback (most recent call last):
...
TypeError: Axis must be specified when shapes of a and weights differ.With keepdims=True, the following result has shape (3, 1).
>>> flops.average(data, axis=1, keepdims=True)
array([[0.5],
[2.5],
[4.5]])>>> data = flops.arange(8).reshape((2, 2, 2))
>>> data
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> flops.average(data, axis=(0, 1), weights=[[1./4, 3./4], [1., 1./2]])
array([3.4, 4.4])
>>> flops.average(data, axis=0, weights=[[1./4, 3./4], [1., 1./2]])
Traceback (most recent call last):
...
ValueError: Shape of weights must be consistent
with shape of a along specified axis.