Indexing 二维数据点范围查询

Indexing 二维数据点范围查询,indexing,kdtree,spatial-query,spatial-index,range-query,Indexing,Kdtree,Spatial Query,Spatial Index,Range Query,我正在处理一个巨大的2d数据集,需要对每个点进行范围查询,将范围内的邻居作为一个集合返回 我已经用KD-Tree-form-sk-learn测试了一个索引,但问题是,它以列表的形式返回索引,转换为集合需要花费太长时间。 是否有一种数据结构,它将范围查询中的点作为集合而不是列表返回 结果不是本机列表 获取k-d-tree的源代码,并进行修改,使其直接写入集合,而不是列表 但我非常怀疑这能解决你的实际问题。将一个小列表转换为一个集合几乎不应该是一个性能问题。。。但是,您使用的是python。传统的p

我正在处理一个巨大的2d数据集,需要对每个点进行范围查询,将范围内的邻居作为一个集合返回 我已经用KD-Tree-form-sk-learn测试了一个索引,但问题是,它以列表的形式返回索引,转换为集合需要花费太长时间。
是否有一种数据结构,它将范围查询中的点作为集合而不是列表返回

结果不是本机列表

获取k-d-tree的源代码,并进行修改,使其直接写入集合,而不是列表


但我非常怀疑这能解决你的实际问题。将一个小列表转换为一个集合几乎不应该是一个性能问题。。。但是,您使用的是python。传统的python set()将比numpy数组慢很多。但是不要因为数据结构没有使用慢集而责怪它。

您确定从列表构造集需要花费太长时间吗?你让它听起来好像需要的时间和范围查询本身一样长,甚至更长,在这种情况下,我怀疑你创建一个集合是有问题的。也许你可以给我们看一些计时号码?此外,每个空间树还必须在内部将结果点添加到集合中,因此,这不会比在列表上迭代以创建集合的速度更快……对于您的问题,这里是答案:)参考文献仅说明了为什么转换到集合比转换到列表花费的时间更长。我的问题是它是否真的是瓶颈,通常范围查询应该比创建集合或列表花费更长的时间。另外,正如我所提到的,如果你想要一个集合,就必须有人承担创建它的成本,无论是你还是KD树在内部进行创建。。。