使用np.any()捕获异常值

时间:2018-04-01 18:02:04

标签: python numpy

我试图从数据框中提取所有上下异常值。我可以在单独的行中进行操作,为uppers(例如hi_outs = (sepal_outliers > 4.05))分配变量,将另一个变量分配给lowers(例如lo_outs = (sepal_outliers < 2.05))。但我想尝试在一个变量中抓取两个。

sepal_outliers = x[:,1]
outliers = np.any(sepal_outliers < 2.05, sepal_outliers > 4.05)
df[outliers]

我不确定为什么我会收到以下错误。

TypeError: only integer scalar arrays can be converted to a scalar index

任何想法?我怎么能做这个工作?我会在此期间继续读书......

1 个答案:

答案 0 :(得分:2)

你可能想要使用NumPy的布尔索引:

outliers = sepal_outliers[(sepal_outliers < 2.05) | (sepal_outliers > 4.05)]

也就是说,为您设置的条件的每个元素构造TrueFalse的布尔数组,并将其索引到同一个数组sepal_outliers中。 请注意,为此,您需要sepal_outliers作为NumPy数组而不是常见或花园Python列表。