我有一个数组 [1,2,3,4,5,6,10,100,200] 我想要的是删除数组中 2 个最大的异常值。 结果应该是 [1, 2, 3, 4, 5, 6, 10]。
我尝试过这个,但它不起作用。有人可以帮我吗?
arr = [1,2,3,4,5,6,10,100,200]
elements = numpy.array(arr)
mean = numpy.mean(elements, axis=0)
sd = numpy.std(elements, axis=0)
final_list = [x for x in arr if (x > mean - 2 * sd)]
final_list = [x for x in final_list if (x < mean + 2 * sd)]
print(final_list)
如果要删除所有大于或等于第二大的项目,请使用
partition
和布尔索引:
elements = np.array([1,2,3,4,5,6,10,100,200])
N = 2
out = elements[elements < np.partition(elements, -N)[-N]]
输出:
array([ 1, 2, 3, 4, 5, 6, 10])