2017-01-05 5 views
0

У меня есть список 2-мерных координат, которые я создаю kdtree. Координаты имеют тип double. [508180.748, 195333.973]KDTree двойные целые числа

Я использую numpy для создания и массива, а затем использую функции KDTree Scipy.

import numpy as np 
import scipy.spatial 

points_array = np.array(points) 
kdt = scipy.spatial.KDTree(points_array) 

# Query  
tester = kdt.query_pairs(20) 
tester = list(tester)  
print(tester[0]) 

Это возвращает:

(109139, 109144)

В результате потерял разрешение исходных данных. Как сохранить формат с плавающей запятой двойной точности?

ответ

2

Это индексы в массиве точек, а не координаты значений самих точек. Кортеж имеет два индекса, по одному для каждой точки массива, который является частью пары, разделение которой в координатном пространстве меньше, чем расстояние запроса.

Чтобы увидеть значения координат точек в вашей паре, вы можете сделать следующее:

tester = kdt.query_pairs(20) 
tester = list(tester)  
print(points_array[tester[0][0]], points_array[tester[0][1]]) 
+0

Спасибо! Я попробовал это, и он вернул '(array ([527948., 169578.]), array ([527959., 169593.]))' Почему это отбрасывает что-либо мимо '.'? – LearningSlowly

+0

Я получаю полную точность при использовании этого кода, поэтому, боюсь, я не знаю, почему вы видите это поведение. Я предполагаю, что эти значения не имели ничего после '.', или у вас есть другая проблема, возможно, что-то связанное с' dtype'. Вам нужно будет отправить трассировку для кого-то, чтобы помочь вам устранить неполадки. – kiliantics

Смежные вопросы