0
所以我有兩個2d列表與x和y座標,我想要通過list1,併爲每個點找到最接近的x,y座標在列表2中。它們的長度不同,如果我不使用list2的所有點,或者即使重複使用點,也可以,只要我在list1中只查看一次所有點。我需要移位本身以及兩點列表中的位置。我試圖用一個函數我在這個網站找到,但它似乎並不奏效:找到一個列表中最近的x,y位置到另一個列表中的x,y位置?
def do_kdtree(combined_x_y_arrays,points):
mytree = scipy.spatial.cKDTree(combined_x_y_arrays)
dist, indexes = mytree.query(points)
return dist,indexes
#Perhaps it's not doing what I wanted it to do. Here is what I tried:
s_x = ([1.0,2.0,3.0])
s_y = ([1.5,2.5,3.5])
SDSS_x = ([3.0,4.0,5.0])
SDSS_y = ([3.5,4.5,5.5])
list1 = zip([s_x],[s_y])
list2 = zip([SDSS_x],[SDSS_y])
shift,place_in_array = do_kdtree(list1,list2)
和錯誤,我得到:
Traceback (most recent call last):
File "tester.py", line 23, in <module>
shift,place_in_array = do_kdtree(list1,list2)
File "tester.py", line 9, in do_kdtree
mytree = scipy.spatial.cKDTree(combined_x_y_arrays)
File "ckdtree.pyx", line 811, in scipy.spatial.ckdtree.cKDTree.__init__ (scipy/spatial/ckdtree.c:7157)
ValueError: too many values to unpack (expected 2)
我得到的印象,這意味着功能WASN」期待二維列表,這意味着這個函數並沒有真正做我想做的事情。我甚至不確定什麼「索引」正在返回,如果它真的是列表中的要點,這正是我所希望的。如果是這樣的話,有人可以告訴我是否有一個現有的功能可以用來做到這一點?
只是一個想法 - 距離公式計算兩個點之間的距離。如果你想要一個距離最近的一套。計算集合之間的距離。這是一個天真的解決方案,但這是一個好的開始 – Dudemanword