0
我有一个日期列表,master_time
。对于master_time
中的每个日期,我在四个其他日期列表中搜索最接近的匹配项; time1
,time2
,time3
和time4
。结果将附加到“最近匹配”列表中,稍后将用于连接包含来自不同数据源的时间序列信息的数据帧。 (或许有初始问题的一个更好的办法,但是这是我来了这么远)如何加快速度:搜索多个日期列表以查找最接近的匹配项。 [Python]
要通过4只列出了搜索,我创建了以下(相当笨重)循环:
master_time = [some list of dates...]
time1 = [some other list of dates...]
time2 = [some other list of dates...]
time3 = [some other list of dates...]
time4 = [some other list of dates...]
closest2=[];closest4=[];closest5=[];closest6=[]
for i in master_time:
index_time=i
closestTimestamp1=min(time1, key=lambda d: abs(d - index_time))
closestTimestamp2=min(time2, key=lambda d: abs(d - index_time))
closestTimestamp3=min(time3, key=lambda d: abs(d - index_time))
closestTimestamp4=min(time4, key=lambda d: abs(d - index_time))
closest1.append(str(closestTimestamp1))
closest2.append(str(closestTimestamp2))
closest3.append(str(closestTimestamp3))
closest4.append(str(closestTimestamp4))
print str(i)
此循环每次迭代需要约5秒(即方式太慢)。我对Python一般都很陌生,所以我怀疑有几种方法可以简化它以使其更快。任何建议,非常感谢!
考虑到您正在多次搜索每个时间列表,为什么不排序所有时间列表,然后进行二分搜索?这将显着降低算法的时间复杂度。 – James
@詹姆斯伟大的建议 - 我还没有完全得到它的完整工作,但它已经看起来更快。谢谢! – user5503831