numpy:列出列表中的所有元素,这些元素与同一列表中的至少一个其他元素具有至少一个共同点

时间:2019-12-03 16:34:12

标签: python numpy

我有一个numpy数组shape(n,3),我想通过至少具有一个公共值来过滤链接的数组中的元素:

[0.0,0.1,0.2]

[0.2,0.3,0.4]

[0.5,0.6,0.7]

返回:

[0.0,0.1,0.2]

[0.2,0.3,0.4]

我想知道是否有一种快速有效的方法使用numpy来做到这一点,因为我必须处理大量数据,而我宁愿避免for循环。

谢谢

1 个答案:

答案 0 :(得分:1)

IIUC您希望列出列表的所有元素,这些元素与同一列表的至少一个其他元素具有至少一个共同点。

在这种情况下,简单列表理解+ set(...).intersection(...)就可以了。对于x,输入数组:

y=[el for el in x if max(len(set(el).intersection(set(el_inner))) for el_inner in x if el_inner!=el)]

#for x=[[1,2,3],[4,4,2],[4,6,5],[7,8,9]]
#y=[[1, 2, 3], [4, 4, 2], [4, 6, 5]]

#for x=[[1,2,3],[4,4,2],[4,6,5],[7,8,9],[8]]
#y=[[1, 2, 3], [4, 4, 2], [4, 6, 5], [7, 8, 9], [8]]
相关问题