Я новичок в деревьях 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
. Это не те цифры, которые вы ожидали? - person Warren Weckesser   schedule 17.08.2016