2017-01-05 75 views
0

我有一個2維座標列表,我從中創建kdtree。座標類型爲double - 例如[508180.748, 195333.973]KDTree double type整數

我使用numpy來創建和數組,然後我使用scipy的KDTree函數。

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