Why not just use a kd tree or voroni?
Also k-d trees don't scale much in higher dimensions (https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/...) so in large dimensional problems (the article says 20 is already large) the naive linear search tends to be actually faster. Voronoi is even worse in dimensions larger than 2.
Source: I did this when I wrote a library for reverse geocoding which uses a kd tree.