我目前正在寻找一种构建几棵kd树以快速查询某些n维数据的方法。但是,scipy KD树算法存在一些问题
我的数据由id -> {data: somedata, coordinate: x, y}
组成
我希望能够基于坐标和k最近邻居的ID进行查询,以及获取固定半径邻居的ID。从KDTree和cKDtree的科学实现来看,这是不可用的。
我的其他选择是编写我自己的KD树,因为我只是我,或者...?
最佳答案
通过玩KDTree,看起来它坚持要像2D numpy数组一样向其构造函数提供对象,但API会将索引返回到该数组中。此外,您不能只猴子将数据修补到各个坐标上。
但是,您仍然可以利用KDTree的勇气。您需要将对象拆分为附加数据对象的并行列表,以及KDTree看到的坐标的numpy数组。当它说出来时,返回第三个点进行搜索,您知道该点对应于附加数据对象列表中的第三个索引。
当然,它比提供给您一个键函数来提供任意对象的坐标的API笨拙,类似于如何将键传递给python sort函数,但它比滚动自己的KDTree实现好得多。