python做两个list的时间最短匹配
python做两个list的时间最短匹配
方案一:
cfl = dirCellInfo['FileNamelist']#cellfilenamelist
ctl = dirCellInfo['FileTime']#celltimelist
mtl = dirMiceInfo['FileTime']#micetimelist
mi = []#mice index,匹配上的Mice index
c = 0
for t in ctl:#t is currnet cell time
tmp = [abs(i - t) for i in mtl] #对 mtl都减去当前的 cell time, tmp is temp
mi.append(tmp.index(min(tmp)))#得到了当前和Cell最匹配的index
self.teLog.append(cfl[c] + "\t-->time:" + str(t) + "\t-->MiceIndex:" + str(mi[-1]) + "\t-->delt:" + str(min(tmp)))
c = c + 1
-->time:53713519 -->index:48 -->delt:12
-->time:53713612 -->index:50 -->delt:0
-->time:53713713 -->index:53 -->delt:10
方案二,用矩阵操作,效率能提升10左右
time_start=time.time()
ctlRM = np.tile(np.array(ctl),(np.shape(mtl)[0],1))
mtlRM = np.tile(np.array(mtl), (np.shape(ctl)[0], 1))#Mice time list rematrix
mtlRMT = mtlRM.T#Mice time list rematrix transpose
dm = abs(ctlRM - mtlRMT)
mi = np.argmin(dm, axis=0)#mice index
time_end=time.time()
print('111totally cost',time_end-time_start)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?