Python 有没有办法加速这个循环?
我需要以更有效的方式编写此块:Python 有没有办法加速这个循环?,python,performance,for-loop,Python,Performance,For Loop,我需要以更有效的方式编写此块: for aci in teta_degree: for t_degeri in t: for x_degeri in x_values: resulted_y_values = np.tan(aci) * x_degeri + t_degeri / np.cos(aci) result.append([aci,t
for aci in teta_degree:
for t_degeri in t:
for x_degeri in x_values:
resulted_y_values = np.tan(aci) * x_degeri + t_degeri / np.cos(aci)
result.append([aci,t_degeri,x_degeri,resulted_y_values])
通过使用itertools,我可以替换for循环,但找不到将结果_y_值放入结果中相关位置的方法:
result_2 = [i for i in itertools.product(teta_degree,t,x_values)]
多亏了@PaulRooney,即使是他(也是我)也没有想到,他的解决方案,即将
np.tan
和np.cos
操作带到外环,带来了非常好的性能:
yeni_süre = time.time()
for aci in teta_degree:
tan = np.tan(aci)
cos = np.cos(aci)
for t_degeri in t:
for x_degeri in x_values:
resulted_y_values = tan * x_degeri + t_degeri / cos
result.append([aci,t_degeri,x_degeri,resulted_y_values])
print('New: ',time.time()-yeni_süre,'sec')
1.061秒
而旧的:
8.601秒
所有这些都是独立的循环。我觉得这里有点不对劲。您可能需要在一个内部循环中使用iterable from outer循环loops@ShikharDua因为我需要x_值和t的每一个值,所以我把teta_度放在外层loop@PaulRooney关于每个嵌套循环中不必要的重新计算,您是对的。但我看不到任何不必要的迭代。另一个结果是使用itertools。在这种情况下,与我放弃与结果值相关的操作时仅使用for循环相比,product并不快;更慢。