没有填充的python卷积

标签 python numpy scipy convolution

我正在寻找一种简单的方法来实现 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()

enter image description here

关于没有填充的python卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52185973/

相关文章:

python - Python中正态分布的曲线拟合

python - 在 Django 的 installed_apps 中使用元组与列表有关系吗

python - round() 和 numpy.round() 之间的底层区别是什么?

python - 年龄分布的 Numpy 梯形分布

python - numpy中的插入排序?

python - 尽管有 mask 区域,但从一个平面映射到另一个平面

python - 将纹理映射到 mayavi 网格

python - 在新鲜环境中构建 cython 扩展 : cannot find/lib/libpthread. so.0

python - Pandas 宽格式转换为长格式

python - 将 Torch 2D 张量 ("Tiles") 重新排列为特定顺序