去除数组中最大的异常值-Python

问题描述 投票:0回答:1

我有一个数组 [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)
python arrays numpy outliers
1个回答
0
投票

如果要删除所有大于或等于第二大的项目,请使用

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])
© www.soinside.com 2019 - 2024. All rights reserved.