【发布时间】:2016-08-18 15:17:37
【问题描述】:
我是 KD 树的新手,我使用它们为一个数组 (search_array) 中的每个点找到最近的邻居,并与第二个数组 (vec_array) 中的所有点进行比较。
两个数组的格式如下:
array([[ 51.54094696, 0.09767043],
[ 51.53620148, 0.0798 ],
[ 51.53620148, 0.0798 ],
...,
[ 51.54118347, -0.08202313],
[ 48.84996033, 2.32329845],
[ 40.42570496, -3.70100427]])
这是我的代码:
def kdtree(search_points, vec_points):
mytree = scipy.spatial.cKDTree(search_points)
dist, indexes = mytree.query(vec_points)
return indexes, dist
result = kdtree(vec_array,search_array)
还有输出:
(array([1361, 1339, 1339, ..., 1139, 1766, 1711]),
array([ 0.01365104, 0.00059667, 0.00059667, ..., 0.00151025,
0.00754338, 0.00203098]))
第二个数组显然是距离,但我不知道它在哪个单位,如果有人能启发我,我将不胜感激!
【问题讨论】:
-
单位与输入数组的单位相同。例如,输入数组中前两点之间的距离是
np.sqrt((51.54094696 - 51.53620148)**2 + (0.09767043 - 0.0798)**2) = 0.018489776873052591。这些数字不符合您的预期吗? -
有道理!非常感谢!
标签: python scipy spatial kdtree