我需要执行许多以下类型的循环
for i in range(len(a)):
for j in range(i+1):
c[i] += a[j]*b[i-j]
其中a和b是短数组(大小相同,大约在10到50之间)。可以使用卷积来高效实现:
import numpy as np
np.convolve(a, b)
然而,这给了我完整的卷积(即向量比上面的for循环要长)。如果我在convolve中使用“same”选项,则会得到中心部分,但我想要的是第一部分。当然,我可以从完整的向量中切掉我不需要的部分,但如果可能的话,我想摆脱不必要的计算时间。
有人能建议一个更好的循环矢量化方法吗?
scipy
提供的卷积工具:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.convolve2d.html - hafiz031