我疯了,因为有时一个函数会返回错误的数据对!我有一个大约700点的numpy数组:
np.array =[[ 1.00000000e+01 -4.65000000e+02]
[ 1.78319153e+01 -4.60252579e+02]
...]
我有一个观点:
point [32.121456577748098, -241.01907826915999]
并且只想检查我的数组中最接近我给定点的点或索引。
我用这一行找到最近的点:
array[spatial.KDTree(array).query(point)[1]]
哪个好看。但有时它不起作用!它只是从我的数组中返回一个不是最接近的项目。 有趣的是,当我尝试类似的功能或解决方案时,两个功能不能同时工作。我不知道为什么它有效,有时不行。阵列和点是在主循环中新生成的,该主循环也使用TCP和UDP。我怎么能一般地调试它?
谢谢!
答案 0 :(得分:0)
你为什么不在numpy中这样做?
distance = np.sum((yourlist - yourpoint)**2.)**(1/2.)
index = np.argmin(distance)
答案 1 :(得分:0)
这不是您具体问题的直接答案,但我建议您只计算numpy.linalg.norm(data - point, axis=1)
,然后使用numpy.argmin()
查找最小标准的索引。
本质:
dist = numpy.linalg.norm(data - point, axis=1)
minindex = np.argmin(dist)
closest_pt = data[minindex]