【发布时间】:2014-12-11 21:23:51
【问题描述】:
如果列表中的某个项目超出中位数的四分位范围,我会尝试从列表中删除它。
这里是列表:
l = [69, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 87, 89]
IQR、中位数和中位数上下均与import numpy as np一起使用
iqr = np.subtract(*np.percentile(l, [75, 25]))
median = np.percentile(l, 50)
minus = median - iqr
plus = median + iqr
负数为 69,正数为 71(使用中位数上下的 IQR)
但是,当遍历列表并尝试删除高于/低于 iqr 的项目 (87、89) 时。它们不会从列表中删除。
for i in l:
if i < minus:
del i
if i > plus:
del i
当我打印列表时,它仍然显示 87、89。
【问题讨论】:
-
您的循环没有对列表进行任何更改。虽然
i从列表中弹出,但它不受列表的限制。所以del i根本不碰l