首页 > 解决方案 > 转换函数以减少计算时间(python)

问题描述

我正在尝试将函数转换为更优化的方式以减少计算时间。更具体地说,我想保持 plot1 的每个点与 plot2 的所有点(其中 plot1、plot2 具有纬度、经度列的数据帧)相比的最小半正弦距离。这是我的代码:

def calculate_min_haversine_distance(plot1, plot2):

    for index,row in plot1.iterrows():
        minimum = 100000000
        for index2, row2 in plot2.iterrows():
            dis = haversine_distance(row.latitude, row.longitude, row2.latitude, row2.longitude) 
            if (dis<minimum):
                minimum=dis
        plot1.loc(index,'Min Haversine Distance') = minimum

    return plot1

标签: pythonperformancelambdaruntimenested-loops

解决方案


我不确定如何摆脱第一个循环,但这应该可以帮助您摆脱第二个循环:

def calculate_min_haversine_distance(plot1, plot2):
    for index,row in plot1.iterrows():
        plot2['dist'] = plot2.apply(lambda x: haversine_distance(row.latitude, row.longitude, x.latitude, x.longitude), axis=1)
        plot1.loc[index,'Min Haversine Distance'] = min(plot2['dist'])
    plot2.drop('dist', axis=1, inplace=True) # Delete the temporary column created
    return plot1

推荐阅读