【问题标题】:2D data point range query二维数据点范围查询
【发布时间】:2017-05-27 20:35:54
【问题描述】:

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

【问题讨论】:

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

标签: indexing kdtree spatial-query spatial-index range-query


【解决方案1】:

结果本身不是一个列表。

获取k-d-tree的源代码,修改后直接写入集合,而不是列表。

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

【讨论】:

    猜你喜欢
    • 2022-07-11
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多