scipy kdtree与元数据

Pwn*_*nna 7 python algorithm kdtree scipy

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

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

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

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

Rob*_*aus 5

从使用 KDTree 来看它似乎坚持向其构造函数提供一个类似 2D numpy 数组的对象,但 API 返回该数组的索引。此外,您不能只是将数据随意修补到各个坐标上。

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

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