有没有办法简化三维场上的三嵌套循环?代码如下所示:
from itertools import product
for kx, ky, kz in product(freq, freq, freq):
k = np.sqrt(kx**2+ky**2+kz**2)
if int(k+0.5) < N/2.0:
yaxes[field][int(k+0.5)] += A[kx][ky][kz]
A的形状是(N,N,N),freq是长度为N的特殊迭代。
也许有一个numpy工具来执行这段代码,因为这需要很长时间。你知道吗
Tags:
通过以下简单的优化,您可以将时间消耗减少20%:
使用dis模块检查字节码并计时以测量算法的速度。下面的例子说明了你的代码是如何变化的。你知道吗
每次写入int(k+0.5)时,都会得到以下字节码:
最好只计算一次,这样下一次调用可以快得多:
N/2.0也是这样。而不是在每次迭代中都有这个:
只需使用预先计算的NN:
相关问题 更多 >
编程相关推荐