我有两组坐标:
{(x1,y1),..(xn,yn)}
{(w1,z1),..(wn,zn)}
我希望将第2组中的每一对与第1组中最接近的对匹配。我的团队规模很大,因此搜索需要高效。
任何建议的建议将不胜感激。此外,如果我改为有2组,其中第1组= {(x1,y1,z1),..(xn,yn,zn)}
,第2组= {(u1,v1, w1),..(un,vn,wn)}
,我的答案将有何不同?此外,考虑到我的团队太大而无法存储在计算机上,那么,任何克服这个问题的建议都将受到赞赏。
答案 0 :(得分:4)
您可以使用KDTree:此算法可以有效地找到最近的邻居,从而显着减少比较次数。 “KD”代表“k维”,意味着它可以处理任意数量维度的数据(回答你的上一个问题)。
您可以使用其中一个列表构建树,然后针对最近元素的另一个列表查询的每个元素构建一个树。 Scipy提供implementation for ktrees。