python-使用numpy过滤元组列表中的行

我正在寻找一种更快的方法,使用numpy并避免循环来过滤出元组列表.

A = [(27157, 4),
       (24814, 0),
       (1047, 2),
       (18265, 2),
       (2857, 4),
       (23854, 2),
       (36881, 0)]

现在,我必须根据第二个元素(即4)对其进行过滤.
如果存在“ 4”,则形成一个列表“ B”,如果不存在,则形成列表“ C”.

那是:

B = [(27157, 4),(2857, 4)]
C = [(24814, 0),(1047, 2),(18265, 2),(23854, 2),(36881, 0)]

解决方法:

使用NumPy,您可以使用布尔索引来返回数组:

mask = A[:, 1] == 4
B = A[mask]
C = A[~mask]

这要求您输入的内容为NumPy数组:

A = np.array([(27157, 4),
              (24814, 0),
              (1047, 2),
              (18265, 2),
              (2857, 4),
              (23854, 2),
              (36881, 0)])
上一篇:java-在MarkLogic的路径范围查询中不区分大小写的搜索


下一篇:python-如何识别缺少的索引