7

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

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

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

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

4

1 回答 1

4

从玩弄KDTree 来看,它似乎坚持将 2D numpy 数组像对象一样提供给它的构造函数,但 API 会将索引返回到该数组中。此外,您不能只将数据修补到各个坐标上。

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

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

于 2013-01-13T19:21:37.457 回答