使用没有 for 循环的 Scipy 对自身进行 n 次卷积向量



我想在不使用 for 循环的情况下将向量与自身卷积 n 次(我是 numpy 的新手(。 现在我有这个:

def build_gaussian_filter(filter_size):
ones_array = np.array([1, 1])
result = np.array([1, 1])
for i in range(filter_size-2):
result = np.convolve(ones_array, result)
return result

有没有一种没有循环的 numpy 方法可以做到这一点? 谢谢

您可以使用内置的窗口函数:

scipy.signal.windows.gaussian(5,1) * 6
>>> array([0.8120117 , 3.63918396, 6.        , 3.63918396, 0.8120117 ])

给你的函数给出几乎相同的结果:

build_gaussian_filter(5)
>>> [1 4 6 4 1]

虽然这似乎是一种侥幸,但随着窗口大小的增加,您的结果会与 scipy 返回的内核不同。你也可以在 scipy 中查看广义高斯窗口。

最新更新