scipy.stats.

trimboth#

scipy.stats.trimboth(a, proportiontocut, axis=0)[source]#

从数组的两端截取一部分数据项。

从给定数组的两端截取指定比例的数据项(即,如果 proportiontocut = 0.1,则从分数的最左端截取 10% 最右端截取 10%)。截取的值为最低值和最高值。如果比例导致非整数截取索引(即保守地截取 proportiontocut),则截取较少数据。

参数:
a类数组

要截取的数据。

proportiontocut浮点数

要从两端截取的数据集总比例(介于 0-1 之间)。

axis整数或 None,可选

指定截取数据时要沿其进行截取的轴。默认值为 0。如果是 None,则在整个数组 a 上进行计算。

返回:
outndarray

截取后版本的数组 a。截取内容的顺序是未定义的。

另请参见

trim_mean

示例

创建一个包含 10 个值的数组,从两端截取其中 10% 的值

>>> 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])

请注意,输入数组的元素是按值修剪的,但输出数组不一定按值排序。

修剪的比例会四舍五入到最接近的整数。例如,从一个包含 10 个值的数组的每一端修剪掉 25% 的值将返回一个包含 6 个值的数组

>>> b = np.arange(10)
>>> stats.trimboth(b, 1/4).shape
(6,)

可以沿着任意轴修剪多维数组,也可以跨整个数组修剪

>>> 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,)