快速受限最近邻搜索

时间:2021-03-19 12:58:25

标签: python scipy distance nearest-neighbor kdtree

我想对数据矩阵 X 中的每个点实施受限的最近邻搜索。具体来说,我想在 X[i,:] 的行中找到 X[mask_i,:] 的最近邻居,其中 mask_i 是取决于 X[i,:] 的逻辑掩码。

以下是使用 scipy.spatial.cKDTree 类完成此任务的蛮力方法。在其中,我将 X[i,:] 与其在 X[mask_i,:] 中的最近邻居的距离存储在数组 r 中。

for i in range(n):
    Tree = scipy.spatial.cKDTree(X[mask_i,:]); # mask_i is a logical mask, depending on X[i,:]
    NN = Tree.query(X[i,:], k=2);
    r[i] = NN[0][1];

然而,这种方法在计算上非常昂贵,因为它需要为每个查询训练一个新的 KD-Tree。我的问题是是否有一种方法可以训练一次 KD 树(在 for 循环之前)并在 X[mask_i] 中的数据点之间查询 KD 树的最近邻居。

如果 KD-trees 不是解决此类问题的正确工具,我将不胜感激任何对正确工具的建议。非常感谢。

0 个答案:

没有答案
相关问题