scipy kdtree与元数据

时间:2013-01-13 18:19:10

标签: python algorithm scipy kdtree

我目前正在寻找一种方法来构建几个kd树,以便快速查询一些n维数据。但是,我对scipy KD树算法存在一些问题

我的数据包含id -> {data: somedata, coordinate: x, y}

我希望能够根据坐标和k最近邻居的ID进行查询,并获得修复半径neghbour的id。从KDTree和cKDtree的scipy实现来看,这是不可用的。

我的其他选择是写我自己的KD树,这不会那么好,因为我只是我,或者......?

1 个答案:

答案 0 :(得分:4)

从使用KDTree开始,看起来它坚持要有一个2D numpy数组,就像给它的构造函数一样,但是API会将索引返回到该数组中。此外,您不能只是将数据修补到各个坐标上。

但是,你仍然可以利用KDTree的胆量。您需要将对象拆分为附加数据对象的并行列表,以及KDTree看到的坐标的numpy数组。当它说,返回某个搜索的第3个点时,您知道它对应于附加数据对象列表中的第3个索引。

当然,它比一个API更难以提供一个关键函数,它可以提供来自任意对象的坐标,类似于如何将键传递给python排序函数,但它比滚动自己的KDTree实现要好得多。