加快python循环

fri*_*hax 5 python performance for-loop

我正在尝试加速以下python代码:

for j in range(4,len(var_s),3):
    mag_list.append(float(var_s[j]))
mag_list = [value for value in mag_list if value != 99.]
med_mag = np.median(mag_list)
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法将两个for循环合并为一个?这样,它真的很慢.我需要的是从var_s列表中提取每个第三个条目,从五分之一开始,如果该条目的值不等于99.在结果列表中,我需要中位数.谢谢!

mgi*_*son 12

你可能会尝试:

mag_list = [value for value in var_s[4::3] if value != 99.]
Run Code Online (Sandbox Code Playgroud)

取决于var_s你,你可能会做得更好itertools.islice(var_s,4,None,3),但这肯定需要时间知道.

如果你一直坚持使用numpy,也许你会做得更好:

vs = np.array(var_s[4::3],dtype=np.float64)  #could slice after array conversion too ...
med_mag = np.median(vs[vs!=99.])
Run Code Online (Sandbox Code Playgroud)

同样,这需要时间来看看它相对于其他人的表现.