【问题标题】:Name of this algorithm, and is there a numpy/scipy implementation of it?该算法的名称,是否有它的 numpy/scipy 实现?
【发布时间】:2012-03-21 18:35:58
【问题描述】:

动机:

我已经看到了这种算法的描述,如果存在标准实现,我宁愿不重新发明轮子。我还了解到,如果有 scipy/numpy 实现,它通常比我可以在 python 中滚动的任何东西都要快。

算法说明

我在飞机上有大量的点(几百万)。从一个包含所有点的大框开始,我想不断地将框细分为面积相等的子框。当子框中至少有 1,000 个点时,细分继续递归。该算法返回一棵树,该树描述了细分以及点到树的每个叶节点的映射。

这个算法的名称是什么(类似于分而治之?),当给定一个二维 numpy 点数组时,是否有标准的方法?

【问题讨论】:

  • 如果在一维中分裂它是一个 N-kD 树(对于 N=2)。还应该进行拆分,以使两个部分的种群大小(大约)相等。
  • @wildplasser 从计算的角度来看,我同意你关于沿相同大小的种群(最小树深度)的分裂。然而,我试图复制一篇论文的结果,他们完全按照我所说的那样,分割相等的区域
  • 哎呀,太丑了。但至少它们在尺寸

标签: python algorithm numpy scipy


【解决方案1】:

它被称为quadtree 分区。至于 Python 代码,见this thread

【讨论】:

  • 不管它值多少钱,scipy.spatial.KDTree(和/或scipy.spatial.cKDTree,出于性能原因用 C 语言编写)是比您链接的线程中列出的选项更可靠的选择到,i.m.o.
  • @JoeKington - 很高兴知道。鉴于标签,scipy 中的东西可能对 OP 来说可能更好。
猜你喜欢
  • 2012-03-17
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2020-06-08
  • 2021-12-20
  • 2021-04-08
  • 1970-01-01
相关资源
最近更新 更多