scipy.stats.

trim1#

scipy.stats.trim1(a, proportiontocut, tail='right', ось=0)[источник]#

Отсечь долю с ОДНОГО конца переданного распределения массива.

Если proportiontocut = 0.1, отсекает 'левую' или 'правую' 10% значений. Наименьшие или наибольшие значения обрезаются (в зависимости от хвоста). Отсекает меньше, если пропорция приводит к нецелому индексу отсечения (т.е. консервативно отсекает proportiontocut ).

Параметры:
aarray_like

Входной массив.

proportiontocutfloat

Доля для отсечения 'слева' или 'справа' от распределения.

tail{‘left’, ‘right’}, необязательно

По умолчанию ‘right’.

осьint или None, опционально

Ось, вдоль которой обрезаются данные. По умолчанию 0. Если None, вычисляется по всему массиву a.

Возвращает:
trim1ndarray

Обрезанная версия массива aПорядок обрезанного содержимого не определён.

Примеры

Создать массив из 10 значений и обрезать 20% его наименьших значений:

>>> import numpy as np
>>> from scipy import stats
>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> stats.trim1(a, 0.2, 'left')
array([2, 4, 3, 5, 6, 7, 8, 9])

Обратите внимание, что элементы входного массива обрезаются по значению, но выходной массив не обязательно отсортирован.

Доля для обрезки округляется в меньшую сторону до ближайшего целого числа. Например, обрезка 25% значений из массива из 10 значений вернёт массив из 8 значений:

>>> b = np.arange(10)
>>> stats.trim1(b, 1/4).shape
(8,)

Многомерные массивы можно обрезать вдоль любой оси или по всему массиву:

>>> c = [2, 4, 6, 8, 0, 1, 3, 5, 7, 9]
>>> d = np.array([a, b, c])
>>> stats.trim1(d, 0.8, axis=0).shape
(1, 10)
>>> stats.trim1(d, 0.8, axis=1).shape
(3, 2)
>>> stats.trim1(d, 0.8, axis=None).shape
(6,)