如何在Python中调试只有时候不起作用的函数?

时间:2017-07-25 17:43:35

标签: python numpy

我疯了,因为有时一个函数会返回错误的数据对!我有一个大约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。我怎么能一般地调试它?

谢谢!

2 个答案:

答案 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]