如何在Python中提高以下代码的性能?

时间:2017-07-23 01:28:53

标签: python numpy

for i in range(N):
   for j in range(M):
      l2 = numpy.argmin(numpy.abs(s - dE[i,j]))
      A[l1,l2] = A[l1,l2] + (n[j]+1)*I[i,j]

基本上,它的作用是在dE[i,j]的数组中找到s的值,并向该位置添加相应的值(n[j]+1)*I[i,j]。反正有没有避免for循环?

1 个答案:

答案 0 :(得分:1)

你可以在技术上使用for i, j in it.product(range(N), range(M)): do_something(),但老实说,瓶颈是argmin和循环的时间复杂性:由于算法的设计,你处于缓慢的区域。如果可能的话,考虑寻找重构的方法,或者如果性能过高而无法重构,可以在C中编写扩展。

如果表现不是瓶颈,YAGNI:你不会需要它。过早优化是万恶之源。