我们正在模拟法国湾(圣米歇尔山)的沉积,为此,我们将沉积物(以数字表示)放入一个数组中。 沉积物在我们的1000 X1000阵列中是随机的,中间有一个岛。你知道吗
在节目结束时,我们想把我们的海湾除数字等于零的岛屿以外的所有地方都平整。你知道吗
我们做到了,但是跑起来太长了。。有人能帮我们找到一个方法来加速我们的计划吗?你知道吗
for j in range (0,375):
for decale in range (250):
diff=M[749+decale][j]-M[749+decale+1][j]
if diff>=3:
M[749+decale][j]-=floor(19*diff/20)
M[749+decale+1][j]+=floor(19*diff/20)
for j in range (625,1000): #for the S-W of the bay
for decale in range (250):
diff=M[749+decale][j]-M[749+decale+1][j]
if diff>=3:
M[749+decale][j]-=floor(19*diff/20)
M[749+decale+1][j]+=floor(19*diff/20)
for i in range (800,1000):
for decale in range (799): For the West of the bay
diff=M[i][200+decale]-M[i][200+decale+1]
if diff>=3:
M[i][200+decale]-=floor(19*diff/20)
M[i][200+decale+1]+=floor(19*diff/20)
for decale in range (799): #Idem
diff=M[i][799-decale]-M[i][799-decale-1]
if diff>=3:
M[i][799-decale]-=floor(19*diff/20)
M[i][799-decale-1]+=floor(19*diff/20)
for j in range (0,375): #Along the island
for decale in range (350):
diff=M[850-decale][j]-M[850-decale-1][j]
if diff>=3:
M[850-decale][j]-=floor(19*diff/20)
M[850-decale-1][j]+=floor(19*diff/20)
for j in range(625,1000): #Idem
for decale in range (350):
diff=M[850-decale][j]-M[850-decale-1][j]
if diff>=3:
M[850-decale][j]-=floor(19*diff/20)
M[850-decale-1][j]+=floor(19*diff/20)
for i in range (500,549): #Idem
for decale in range (500):
diff=M[i][499+decale]-M[i][499+decale+1]
if diff>=3:
M[i][499+decale]-=floor(19*diff/20)
M[i][499+decale+1]+=floor(19*diff/20)
for decale in range (500): #Idem
diff=M[i][500-decale]-M[i][500-decale-1]
if diff>=3:
M[i][500-decale]-=floor(19*diff/20)
M[i][500-decale-1]+=floor(19*diff/20)
return M
关于这些循环的正确性,我不能说什么。我刚刚把它们翻译成Numpy数组,所以它的可读性更好一些。你知道吗
相关问题 更多 >
编程相关推荐