Python Numpy确定数组中导致高方差的值的方法

Python Numpy确定数组中导致高方差的值的方法,python,numpy,Python,Numpy,是否有一种简单的方法来确定数组中导致高方差的值 考虑一组数字 array([164, 202, 164, 164, 164, 166], dtype=uint16) 快速扫描显示,202将导致高差异,如果我从列表中删除,将大大减少差异 >>> np.var(np.array([164, 202, 164, 164, 164, 166])) 196.88888888888886 >>> np.var(np.array([164, 164, 164, 164,

是否有一种简单的方法来确定数组中导致高方差的值

考虑一组数字

array([164, 202, 164, 164, 164, 166], dtype=uint16)
快速扫描显示,202将导致高差异,如果我从列表中删除,将大大减少差异

>>> np.var(np.array([164, 202, 164, 164, 164, 166]))
196.88888888888886
>>> np.var(np.array([164, 164, 164, 164, 166]))
0.64000000000000012
从上面的列表中删除202将大大减少差异

>>> np.var(np.array([164, 202, 164, 164, 164, 166]))
196.88888888888886
>>> np.var(np.array([164, 164, 164, 164, 166]))
0.64000000000000012

但是,如何确定违规值呢?

假设这是您的数据:

In [19]: import numpy as np
In [167]: x = np.array([164, 202, 164, 164, 164, 166], dtype=np.uint16)
这是一个布尔数组,指示
x
中哪些值与平均值的偏差大于1个标准差:

In [170]: abs(x-x.mean()) > x.std()
Out[170]: array([False,  True, False, False, False, False], dtype=bool)
In [171]: x[abs(x-x.mean()) > x.std()]
Out[171]: array([202], dtype=uint16)
我们可以使用布尔数组作为所谓的“花式索引”来检索与平均值的标准偏差超过1的值:

In [170]: abs(x-x.mean()) > x.std()
Out[170]: array([False,  True, False, False, False, False], dtype=bool)
In [171]: x[abs(x-x.mean()) > x.std()]
Out[171]: array([202], dtype=uint16)
或者,逆转不平等性以获得去除“异常值”的数据:


In[172]:x[abs(x-x.mean())完美!!非常感谢您抽出时间