我有一个2维阵列:最近邻搜索:Python的
MyArray = array([6588252.24, 1933573.3, 212.79, 0, 0],
[6588253.79, 1933602.89, 212.66, 0, 0],
etc...)
前两个元素MyArray[0]
和MyArray[1]
是点的X和ÿ坐标。
对于数组中的每一个元素,我想找到最快方式在X单位半径返回其单近邻。我们假设这是2D空间。
让我们举这个例子X = 6
。
我已经通过比较每个元素与其他元素来解决了这个问题,但是当列表长度为22k时,这需要15分钟左右。我们希望最终能在约3000万分的名单上运行。
我已经阅读了有关K-d树的知识并理解了基本概念,但是很难理解如何编写它们。
什么是“Kt树”?你的意思是“k-d树”?对于二维点,您只需要[四叉树](http://en.wikipedia.org/wiki/Quadtree)。有一个早期的问题寻找Python中的四叉树实现:http://stackoverflow.com/questions/6060302/pure-python-quadtree-implementation –
谢谢!我的意思是一棵K-D树。我会查找一个四叉树。 – Dlinet
['scipy.spatial'](http://docs.scipy.org/doc/scipy/reference/spatial.html)模块中有k-d树实现 –