scipy.stats.trimboth#
- scipy.stats.trimboth(a, proportiontocut, axis=0)[source]#
Slice off a proportion of items from both ends of an array.
Slice off the passed proportion of items from both ends of the passed array (i.e., with proportiontocut = 0.1, slices leftmost 10% and rightmost 10% of scores). The trimmed values are the lowest and highest ones. Slice off less if proportion results in a non-integer slice index (i.e. conservatively slices off proportiontocut).
- Parameters:
- aarray_like
Data to trim.
- proportiontocutfloat
Proportion (in range 0-1) of total data set to trim of each end.
- axisint or None, optional
Axis along which to trim data. Default is 0. If None, compute over the whole array a.
- Returns:
- outndarray
Trimmed version of array a. The order of the trimmed content is undefined.
See also
Examples
Create an array of 10 values and trim 10% of those values from each end:
>>> import numpy as np >>> from scipy import stats >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> stats.trimboth(a, 0.1) array([1, 3, 2, 4, 5, 6, 7, 8])
Note that the elements of the input array are trimmed by value, but the output array is not necessarily sorted.
The proportion to trim is rounded down to the nearest integer. For instance, trimming 25% of the values from each end of an array of 10 values will return an array of 6 values:
>>> b = np.arange(10) >>> stats.trimboth(b, 1/4).shape (6,)
Multidimensional arrays can be trimmed along any axis or across the entire array:
>>> c = [2, 4, 6, 8, 0, 1, 3, 5, 7, 9] >>> d = np.array([a, b, c]) >>> stats.trimboth(d, 0.4, axis=0).shape (1, 10) >>> stats.trimboth(d, 0.4, axis=1).shape (3, 2) >>> stats.trimboth(d, 0.4, axis=None).shape (6,)