【发布时间】:2018-02-27 14:39:48
【问题描述】:
我正在尝试从 python 列表中删除异常值。我想从原始列表中获取每个异常值的索引值,以便可以从(另一个)对应列表中删除它。
~~简单的例子~~
我的异常值列表:
y = [1,2,3,4,500] #500 is the outlier; has a index of 4
我的对应列表:
x= [1,2,3,4,5] #I want to remove 5, has the same index of 4
我的结果/目标:
y=[1,2,3,4]
x=[1,2,3,4]
这是我的代码,我想用 klist 和 avglatlist 实现同样的效果
import numpy as np
klist=['1','2','3','4','5','6','7','8','4000']
avglatlist=['1','2','3','4','5','6','7','8','9']
klist = np.array(klist).astype(np.float)
klist=klist[(abs(klist - np.mean(klist))) < (2 * np.std(klist))]
indices=[]
for k in klist:
if (k-np.mean(klist))>((2*np.std(klist))):
i=klist.index(k)
indices.append(i)
print('indices'+str(indices))
avglatlist = np.array(avglatlist).astype(np.float)
for index in sorted(indices, reverse=True):
del avglatlist[index]
print(len(klist))
print(len(avglatlist))
【问题讨论】:
-
定义异常值。你如何识别它?
-
如果数字减去平均值大于标准差的 2 倍。我在实际编码时遇到了麻烦,而不是定义它。我尝试做的每一种方式都会出错
标签: python python-3.x numpy machine-learning outliers