我正在寻找一种更快的方法,使用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)])