【发布时间】:2020-03-15 03:21:36
【问题描述】:
我需要比较两个列表,并根据任一项目的值有条件地从这两个列表中删除项目。
输入:
a = np.array( [1 , 2 , 3 , -1 , 5] )
b = np.array( [1 , -1 , 3 , 4 , 5] )
需要的输出:
a_filter = [1 , 3 , 5]
b_filter = [1 , 3 , 5]
我可以使用以下方法轻松获取出现“-1”值的列表索引数组:
np.where( ( a == -1 ) | (b == -1 ) )[0]
但是从列表 a 和 b 中删除这些索引的最有效方法是什么?我能想到的唯一方法是对已识别的索引进行反向排序,并通过两个列表删除它们,但这似乎效率很低。
列表顺序很重要,因为需要制作混淆矩阵,但不想比较 -1 结果。
【问题讨论】:
-
考虑内置函数 zip。可能在带有条件的列表推导中。可能解压缩以获得两个过滤列表。编辑:因为它们是 numpy,所以使用 numpy 答案
标签: python pandas list numpy filtering