我有一些运行缓慢的
Python / Numpy代码,我认为这是因为使用了双循环.这是代码.
def heat(D,u0,q,tdim):
xdim = np.size(u0)
Z = np.zeros([xdim,tdim])
Z[:,0]=u0;
for i in range(1,tdim):
for j in range (1,xdim-1):
Z[j,i]=Z[j,i-1]+D*q*(Z[j-1,i-1]-2*Z[j,i-1]+Z[j+1,i-1])
return Z
我试图删除双循环和矢量化Z.这是我的尝试.
def heat(D,u0,q,tdim):
xdim = np.size(u0)
Z = np.zeros([xdim,tdim])
Z[:,0]=u0;
Z[1:,1:-1]=Z[1:-1,:-1]+D*q*(Z[:-2,:-1]-2*Z[1:-1,:-1]+Z[2:,:-1])
return Z
这不起作用 – 我收到以下错误:
operands could not be broadcast together with shapes (24,73) (23,74)
所以在试图对Z进行矢量化时,我搞砸了.你能帮我看看我的错误吗?