我有一个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循环。
谢谢
答案 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]]