繁体   English   中英

在 numpy 的 x 和 y 坐标数组中查找最近的点

[英]Finding nearest points in numpy arrays of x and y coordinates

我有两个数组:

a=np.array([[ 41.0,  0.71],
       [ 41.21,  0.87],
       [ 41.14,  0.96],
       [41.5,  0.86])

b=np.array([[ 41.41, 1.51],
       [ 41.3,  0.95],
       [ 41.0,  0.96],
       [42.1,  0.76]),
       [ 40.3,  0.85],
       [ 41.1,  0.76],
       [40.9,  0.96])...]

对于 a 中的每个点,我需要在 b 中找到与该点在比率 r 内最接近的最近点。

我已经尝试做类似于以下示例的操作:“ 在 x 和 y 坐标的 numpy 数组中查找最近点的索引”但没有退出,有人可以向我展示使用 spatial.KDTree 或 spatial.cKDTree 的简单方法吗?

找到距离可以这样完成:

In [1]: import numpy as np

In [2]: a=np.array([[ 41.0,  0.71], [ 41.21,  0.87], [ 41.14,  0.96], [41.5,  0.86]])

In [3]: b=np.array([[ 41.41, 1.51], [ 41.3,  0.95], [ 41.0,  0.96],[42.1,  0.76], [ 40.3,  0.85], [ 41.1,  0.76],[40.9,  0.96]])

计算a[0]b (4) 中所有点之间 x 和 y 的差值,然后将其平方 (5)。

In [4]: c = b - a[0]

In [5]: c*c
Out[5]: 
array([[ 0.1681,  0.64  ],
       [ 0.09  ,  0.0576],
       [ 0.    ,  0.0625],
       [ 1.21  ,  0.0025],
       [ 0.49  ,  0.0196],
       [ 0.01  ,  0.0025],
       [ 0.01  ,  0.0625]])

对内部数组求和 c 的平方以获得距离的平方,然后计算平方根。

In [6]: np.sqrt(np.sum(c*c, axis=1))
Out[6]: 
array([ 0.89894382,  0.38418745,  0.25      ,  1.10113578,  0.71386273,
        0.1118034 ,  0.26925824])

这是从a[0]b每个点的距离。

寻找最小值:

In [8]: np.min(np.sqrt(np.sum(c*c, axis=1)))
Out[8]: 0.1118

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM