В какой единице функция scipy kdtree возвращает расстояние?

Я новичок в деревьях 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]))

Второй массив - это явно расстояния, но я не могу понять, в каких единицах они находятся, я был бы очень благодарен, если бы кто-нибудь просветил меня!


person jedge    schedule 17.08.2016    source источник
comment
Единицы — это те же единицы, что и входной массив. Например, расстояние между первыми двумя точками во входном массиве равно np.sqrt((51.54094696 - 51.53620148)**2 + (0.09767043 - 0.0798)**2) = 0.018489776873052591. Это не те цифры, которые вы ожидали?   -  person Warren Weckesser    schedule 17.08.2016
comment
Это имеет смысл! Большое спасибо!   -  person jedge    schedule 17.08.2016
comment
Тесно связанный: stackoverflow.com/q/33741302/1461210   -  person ali_m    schedule 18.08.2016


Ответы (1)


Как любезно указал Уоррен в комментарии выше, единицы измерения такие же, как и во входном массиве.

person jedge    schedule 18.08.2016