我正在寻找一种简单的方法来实现 2 个 n-dim 数组的二维卷积,而无需在 python 中进行任何填充。 我找到了函数
scipy.ndimage.convolve(input, weights, output=None, mode='constant', cval=0.0, origin=0)
这似乎完全符合我的要求,但只是有点太多了。该函数为边界区域的填充提供了几个选项,但据我所知,没有任何填充的选项,这让我真的很想知道。
当然可以只切割边界,但这对我来说似乎是一个非常没有吸引力的解决方案,因为我一直关注我的程序的性能,它不会阻止不必要的计算
编辑: 对不起,我混淆了相关性和卷积。我的实际意思是相关性。
最佳答案
试试这个:
from scipy import signal
sig = np.repeat([0., 1., 0.], 100)
win = signal.hann(50)
#filtered = signal.convolve(sig, win, mode='valid') / sum(win)
filtered = signal.correlate(sig, win, mode='valid') / sum(win)
print(len(sig), len(filtered))
# 300 251
plt.plot(sig)
plt.show()
plt.plot(filtered)
plt.show()
关于没有填充的python卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52185973/