当python程序里出现大量的条件判断时,要如何做到让程序运行的速度最快?
这是一直以来都遇到的问题,python的for if else结构速度很慢,特别是[for 里 if 嵌套if] 、[for if 并列 elif]的方法,
暂时写的算法里用的是:
1、np.where()、df.where、df.map替代一部分条件逻辑
2、把条件逻辑判断写到def()里,再apply或者是list(map())调用条件逻辑的def()
这两种方法都要比[for if 套 if]快很多,几乎在任何数据场景下。但是有没有更好的方法?
今天看到两个可能有优化效果的函数,记录一下。
来源:https://www.cnblogs.com/fengguozhuying/p/9171806.html
np.selcect()
np.select(condlist, choicelist, default=0)
condlist是首选条件,choicelist是候选的条件.(如果condlist满足那么choicelist就没用),default是两者都满足后还剩余的默认值.
例1:
t = np.arange(6)
t
Out[12]: array([0, 1, 2, 3, 4, 5])
np.select([t<6,t>2,True],[t+10,t-10,66]) #因为t<6都满足,索引执行t+10