поэтому у меня есть два 2d-списка с координатами x и y, и я хочу пройти через list1, и для каждой точки найдите ближайшие координаты x, y в списке2. Они имеют разную длину, и все в порядке, если я не использую все точки списка2 или даже если я повторно использую точки, если я просматриваю все точки только один раз в списке1. Мне нужен сам сдвиг, а также расположение в списках обеих точек. Я попытался с помощью функции я нашел на этом сайте, но не кажется, что это будет работать:найти ближайшую позицию 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