def is_idle2(e):
if e > 0.1:
return 'idle'
elif e < 0.1:
return 'active'
return 'error'
lats = pd.Series([5, 2, 1, 4, 5, 6]*100000)
(lats - lats.shift(1)).dropna().map(is_idle2)
时间安排:
#my solution
%timeit (lats - lats.shift(1)).dropna().map(is_idle2)
10 loops, best of 3: 185 ms per loop
#Currently accepted solution
%%timeit
for i in range(len(lats)-1):
lat1= lats[i]
lat2 = lats[i+1]
is_idle(lat1,lat2)
1 loops, best of 3: 15.8 s per loop
你是说像这样?你知道吗
另一个选项是使用map、lambda和zip,而不是for循环:
或者
我意识到最初的问题是关于for循环,但是我建议这是一个不使用
for loop
的好例子。你知道吗以下是我的解决方案:
时间安排:
在没有for循环的情况下这样做,对于一个大小适中的系列来说,速度要快大约100倍。你知道吗
相关问题 更多 >
编程相关推荐