我正在寻找一种简单的方法来实现2个n-dim数组的2D卷积而无需在python中填充。 我找到了功能
scipy.ndimage.convolve(input, weights, output=None, mode='constant', cval=0.0, origin=0)
这似乎完全可以满足我的要求,但是有点很多。该功能提供了一些用于边框区域填充的选项,但据我所知,没有任何填充的NO选项,这让我真的很纳闷。
当然有可能只是划掉边界,但这对我来说似乎是一种没有吸引力的解决方案,并且由于我一直在关注程序的性能,因此无法避免不必要的计算
编辑: 对不起,但是我混淆了相关性和卷积。我真正的意思是相关。
答案 0 :(得分:1)
尝试一下:
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()