据我所见,这些方法都是在各自的 DLL 中作为 C 函数实现的,而且ndimage
版本似乎更快(两种实现都没有使用并行代码,比如调用 blas 或 MKL)。
此外,当我尝试通过运行以下代码检查它们是否返回相同的结果时,相等的断言失败。我无法从文档中弄清楚这两种方法之间的功能差异到底是什么(文档也不太清楚0
相对于内核源位置的含义;从示例中,我推断它位于中心,但我可能是错的)。
from numpy import random, allclose
from scipy.ndimage.filters import convolve as convolveim
from scipy.signal import convolve as convolvesig
a = random.random((100, 100, 100))
b = random.random((10,10,10))
conv1 = convolveim(a,b, mode = 'constant')
conv2 = convolvesig(a,b, mode = 'same')
assert(allclose(conv1,conv2))
谢谢!