问题描述
我想对数据矩阵 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 不是解决此类问题的正确工具,我将不胜感激任何对正确工具的建议。非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)