# https://en.wikipedia.org/wiki/K-d_tree
from scipy.spatial import KDTree
# define set of points
points = [(1, 2), (3, 2), (5, 5), (2, 1), (4, 3), (1, 5)]
# create tree
kd_tree = KDTree(points)
kd_tree.data
# [[1 2]
# [3 2]
# [5 5]
# [2 1]
# [4 3]
# [1 5]]
# index and distance to nearest point
dist, idx = kd_tree.query([(4.5, 1.25)])
dist # [1.67705098]
idx # [1]
# nearest point
kd_tree.data[idx] # [[3 2]]
Updated on May 27, 2023 Changelog