python - 转换函数以减少计算时间(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
解决方案
我不确定如何摆脱第一个循环,但这应该可以帮助您摆脱第二个循环:
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
推荐阅读
- python - 在 Python 中使用 8 像素邻域模式检查和填充大数组中的中心像素
- c# - 如何将条件订单与 EntityFramework/linq 一起使用
- reactjs - 反应:更新状态,映射状态以显示列表但列表在一秒钟后从视图中消失?
- batch-file - cmd删除文件文件夹WIN 10内容的想法?
- python - 如何使用不和谐 python 库在不和谐的文本通道中删除整个消息
- html - 我使用 CSS 网格错了吗?
- javascript - Electron js win.webContents.print 回调函数不起作用?
- python - Flask-socketio 在路由中发出
- c# - Office365 单点注销
- jmeter - 如何在 Jmeter 中获取采样器的直接父名称