python-3.x - 从python中的列表列表中删除异常值
问题描述
我在 Python 中有这个数据,它是一个列表列表。我想做的是在第二列中找到任何异常值,即 data[0][1]、data[1][1] 等,然后从数据中删除该列表。例如在这里,显然 90 是异常值,我想删除包含 90 的列表,即从数据中删除 [0.5,80]。我已经尝试过了,但我认为最后一部分是不正确的。知道如何使用列表推导来做到这一点吗?
data= [[0.5549872122762148, 41.176470588235304],
[0.575197889182058, 33.55145118733509],
[0.5561224489795918, 38.60204081632651],
[0.5, 90]]
data_median = np.median(data, axis = 0)
data_std = np.std(data, axis = 0)
cut_off = data_std * 3
lower, upper = data_median - cut_off, data_median + cut_off
dataout = [[y for y in x if y if y < lower or y > upper] for x in data]
解决方案
你可以这样做:
dataout = [[x,y] for x,y in data if (lower[0] < x < upper[0]) and
(lower[1] < y < upper[1])]
但是你cut_off
的太任性了。
尝试使用:
cut_off = data_std * 1
推荐阅读
- c# - 从参数列表中返回素数列表,结果列表中的所有数字都应该是唯一的
- database - 关于 RethinkDB 数据库
- c++ - 如何根据派生类成员的存在来启用/禁用成员函数?
- hive - 从子查询/连接的结果中过滤分区时,Hive Query 将进行全表扫描
- reactjs - 如何为 Sanity 序列化程序对象定义 proptypes
- google-cloud-platform - GCP Http 负载均衡器
- sql - 应用 PIVOT 运算符时出错
- javascript - Nexe 模块命令“nexe”未找到错误
- context-free-grammar - L{a^nb^md^n 其中 n>=0,m=2n 的上下文无关文法
- flutter - 使用带有 ListView.separated 的扩展小部件