什么是在2D空间中确定点p最近的点q(最小欧几里得距离)的最快方法?请参见附图。
我目前在Python中使用的方法是将所有距离存储在列表中,然后运行
numpy.argmin(list_of_distances)
当计算m个点p时,这种方法可能会有些慢。不过,它真的会这样吗?
什么是在2D空间中确定点p最近的点q(最小欧几里得距离)的最快方法?请参见附图。
我目前在Python中使用的方法是将所有距离存储在列表中,然后运行
numpy.argmin(list_of_distances)
当计算m个点p时,这种方法可能会有些慢。不过,它真的会这样吗?
你可以计算平方距离而不是直接计算距离。这样就不需要进行 n * m 次平方根运算了。
尽快将所有内容放入numpy中并在其中进行计算。如果您有许多点,则比在列表中计算距离要快得多:
import numpy as np
px, py
x = np.fromiter(point.x for point in points, dtype = np.float)
y = np.fromiter(point.y for point in points, dtype = np.float)
i_closest = np.argmin((x - px) ** 2 + (y - py) ** 2)