Numpy 如何对给定的模具使用scipy.ndimage.convalve?

Numpy 如何对给定的模具使用scipy.ndimage.convalve?,numpy,scipy,convolution,Numpy,Scipy,Convolution,我需要做一些非常类似于本文详细介绍的事情。但模板的制作方式对我来说并不明显。。。嗯,\u flux的模具是,但是temp\u bz和temp\u bx的模具不是 我认为使用变量,而不是数字(比如stencil=np.array([[a,b],[c,d]])a=0.5,b=… 例如,如果递归关系为 flux2[i,j] = a*flux2[i-1,j] + b*bz[i-1,j]*dx + c*flux2[i,j-1] - d*bx[i,j-1]*dz 代码将如何更改?具有flux2、bz和bx

我需要做一些非常类似于本文详细介绍的事情。但模板的制作方式对我来说并不明显。。。嗯,
\u flux
的模具是,但是
temp\u bz
temp\u bx
的模具不是

我认为使用变量,而不是数字(比如
stencil=np.array([[a,b],[c,d]])
a=0.5,b=… 例如,如果递归关系为

flux2[i,j] = a*flux2[i-1,j] + b*bz[i-1,j]*dx + c*flux2[i,j-1] - d*bx[i,j-1]*dz

代码将如何更改?

具有
flux2
bz
bx
变量,并且假设它们是numpy数组(如果不是,则应该),您可以按如下方式编写矢量化形式的ecuation:

flux2[1:,1:] = a * flux2[:-1,1:] + b * bz[:-1,1:] * dx + c * flux2[1:,:-1] - d * bx[1:,:-1] * dz
请注意,由于您没有提到
dz
,我假设它是一个常数,如果它是与
flux2
形状相同的矩阵,则替换为
dz[1:,1::
(同样适用于
dx

上面的那一行将操作矢量化到矩阵的每个
i,j
,从而删除
for
循环,从而提供相当大的加速

您必须定义行和列的边界条件
0
,因为您的等式没有定义在这些特殊情况下要做什么

因此,简而言之,由于您的模板对每个变量只使用一个位置,并且只有4个交互,我想说的是,以其分析形式计算它要快得多,而不是用几乎所有0个模板卷积3个图像(这将是相当多的过度使用)