我想在Python中实现两个非常短的向量(1d)的最快卷积(或者在带有Python接口的C中)。仅报告第一个向量的非零值的卷积结果。
示例:
main_vector = [0,0,0,1,1,1,0,0,0] # usually < 250 elements long
mask = [1,1,1] # usually 31 elements long
result = [0,0,0,2,3,2,0,0,0] # result of convolution
结果是 main_vector 与掩码的卷积,但结果仅报告main_vector的非零值
到目前为止我最快的解决方案:
result = numpy.convolve(main_vector, mask, "same")
result = numpy.multiply(main_vector, result)
在Cython或其他界面中有更快的方法实现吗?非常感谢任何想法。我正在使用它在生物信息学中进行主题搜索,并且我执行了许多这些卷积。