我有一个代码片段,它使用haverine函数计算两个坐标列表之间的距离矩阵.虽然当前的实现工作正常,但它涉及嵌套循环,并且对于大型数据集来说可能很耗时.我正在寻找一种更有效的替代方案,可以避免使用for循环.

import numpy as np
from haversine import haversine
    
string_list_1 = [(20.00,-100.1),...]  # List of vector pair coordinates (lat,long)

string_list_2 = [(21.00,-101.1),...]  # Another list of pair coordinates

dist_mat = np.zeros((len(string_list_1), len(string_list_2)))

for i, coord1 in enumerate(string_list_1):
   dist_mat[i, :] = np.array([haversine(coord1, coord2) for coord2 in string_list_2])

我将感谢建议或代码示例,以实现更高效,更快的实现,避免使用for循环.

推荐答案

使用sklearn中的haversine.指标:

from sklearn.metrics.pairwise import haversine_distances
haversine_distances(string_list_1,string_list_2)

Python相关问答推荐

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

使用miniconda创建环境的问题

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

我们可以为Flask模型中的id字段主键设置默认uuid吗

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

有没有一种方法可以从python的pussompy比较结果中提取文本?

基于索引值的Pandas DataFrame条件填充

Tkinter菜单自发添加额外项目

从一个df列提取单词,分配给另一个列

用fft计算指数复和代替求和来模拟衍射?

Python OPCUA,modbus通信代码运行3小时后出现RuntimeError

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

Matplotlib中的曲线箭头样式

Stats.ttest_ind:提取df值

如何删除剪裁圆的对角线的外部部分

在使用ROLING()获得最大值时,是否可以排除每个窗口中的前n个值?

如何在Python中画一个只能在对角线内裁剪的圆?

是否将列表分割为2?