[英]Finding index of nearest point in numpy arrays of x and y coordinates
[英]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.