回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想知道如何才能做到以下几点:</p>
<pre><code>def GetFlux(self, time):
bx = self.GetField("bx", time) * self.wpewce
by = self.GetField("by", time) * self.wpewce
bz = self.GetField("bz", time) * self.wpewce
flux = np.zeros((self.ncells[0]+1,self.ncells[1]+1),"float32", order='FORTRAN')
flux2 = np.zeros((self.ncells[0]+1,self.ncells[1]+1),"float32", order='FORTRAN')
dx = self.dl[0]
dz = self.dl[1]
nx = self.ncells[0]
nz = self.ncells[1]
j = 0
for i in np.arange(1, nx):
flux2[i,0] = flux2[i-1,0] + bz[i-1,0]*dx
flux[1:,0] = flux[0,0] + np.cumsum(bz[:-1,0]*dx)
for j in np.arange(1,nz):
flux2[0,j] = flux2[0,j-1] - bx[0,j-1]*dz
flux[0,1:] = flux[0,0] - np.cumsum(bx[0,:-1]*dz)
for i in np.arange(1,nx):
for j in np.arange(1,nz):
flux2[i,j] = 0.5*(flux2[i-1,j] + bz[i-1,j]*dx) + 0.5*(flux2[i,j-1] - bx[i,j-1]*dz)
return flux2
</code></pre>
<p>但是没有两个嵌套的循环,这需要很长的时间。<code>Bx</code>、<code>Bz</code>和{<cd3>}是相同大小的数组。在</p>
<p>我已经成功地用数组索引和cumsum替换了前两个单循环,但是我无法找到如何替换嵌套循环。在</p>
<p>有什么想法吗?在</p>
<p>谢谢</p>