Ответ 1
Благодаря Джону Виняару за предложение scipy. После нескольких хороших исследований и испытаний, вот решение этого вопроса:
Предпосылки: Установите Numpy и SciPy
-
Импортируйте модули SciPy и Numpy
-
Сделайте копию 5-мерного массива, включая только значения X и Y.
-
Создайте экземпляр
cKDTree
как таковой:YourTreeName = scipy.spatial.cKDTree(YourArray, leafsize=100) #Play with the leafsize to get the fastest result for your dataset
-
Запросите
cKDTree
для ближайшего соседа в пределах 6 единиц:for item in YourArray: TheResult = YourTreeName.query(item, k=1, distance_upper_bound=6)
для каждого элемента в
YourArray
,TheResult
будет кортежем расстояния между двумя точками и индексом местоположения точки вYourArray
.
Надеюсь, что это поможет любому, кто испытал замешательство с деревьями KD!