gpt4 book ai didi

python - 最近邻搜索 : Python

转载 作者:IT老高 更新时间:2023-10-28 20:40:32 25 4
gpt4 key购买 nike

我有一个二维数组:

MyArray = array([6588252.24, 1933573.3, 212.79, 0, 0],
[6588253.79, 1933602.89, 212.66, 0, 0],
etc...)

前两个元素MyArray[0]MyArray[1]分别是XY坐标点数。

对于数组中的每个元素,我想找到 最快 方法来返回其半径为 X 个单位的单个最近邻居。我们假设这是在二维空间中。

让我们说这个例子 X = 6.

我通过将每个元素与其他元素进行比较来解决了这个问题,但是当您的列表长度为 22k 点时,这需要 15 分钟左右。我们希望最终能在大约 3000 万个点的列表上运行它。

我已经阅读了 K-d 树并理解了基本概念,但在理解如何编写它们时遇到了困难。

最佳答案

感谢 John Vinyard 建议 scipy。经过一些很好的研究和测试,这里是这个问题的解决方案:

先决条件:安装 Numpy 和 SciPy

  1. 导入 SciPy 和 Numpy 模块

  2. 复制 5 维数组,包括 X 和 Y 值。

  3. 创建 cKDTree 的实例像这样:

    YourTreeName = scipy.spatial.cKDTree(YourArray, leafsize=100)
    #Play with the leafsize to get the fastest result for your dataset
  4. cKDTree 中查询 6 个单元内的最近邻:

    for item in YourArray:
    TheResult = YourTreeName.query(item, k=1, distance_upper_bound=6)

    对于 YourArray 中的每一项,TheResult 将是两个点之间的距离的元组,以及 YourArray 中该点的位置索引.

关于python - 最近邻搜索 : Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com