我想加快我的代码,目前需要一个多小时才能在Python/Numpy中运行。大部分计算时间出现在粘贴在下面的函数中。向Python化/ Numpy中的循环向量化可能吗?
我想向量化Z,但是我发现它对于三重循环很难。我能否在某处实施numpy.diff
功能?请看:
def MyFESolver(KK,D,r,Z):
global tdim
global xdim
global q1
global q2
for k in range(1,tdim):
for i in range(1,xdim-1):
for j in range (1,xdim-1):
Z[k,i,j]=Z[k-1,i,j]+r*q1*Z[k-1,i,j]*(KK-Z[k-1,i,j])+D*q2*(Z[k-1,i-1,j]-4*Z[k-1,i,j]+Z[k-1,i+1,j]+Z[k-1,i,j-1]+Z[k-1,i,j+1])
return Z
tdim = 75
xdim = 25
尝试行'Z [1 :, 1:-1,1:-1] = Z [: - 1,1:-1,1:-1 ] + R * q1 * Z [:-1,1:-1,1:-1] *(KK-Z [:-1,1:-1,1:-1])+ D * q2 *(Z [:-1,... -2,1:-1] -4 * Z [:-1,1:-1,1:-1] + Z [:-1,2 :, 1:-1] + Z [:-1,1:-1,:-2] + Z [: - 1,1:-1,2:])'而不是你的三元组。 – halex
不相关,但很重要:您可能想重新检查使用'global'关键字。你的情况没用。 – Simon