我正在构建一个算法,在某些时候我需要计算点 p
和点列表 (centers
) 的最小距离(和索引)。 IE。我需要在 centers
中找到最接近 p
的元素。
目前,我使用的是 fasthaversine,我的代码如下所示:
sample_array = [sample for i in range(len(centers))]
distances = haversine(sample_array, centers, unit='m')
min_index = np.argmin(distances)
centers
可能是一个很长的列表,因此这可能需要很多时间。有人有什么更快的提议吗?
编辑:我尝试了 BallTree 方法,但它似乎比上述方法慢。有关更多上下文,我需要在很多点 p
上运行它,每次 centers
都会不同,因此我每次都需要构造 BallTree。