python为数组创建卷积函数

时间:2012-11-19 05:10:11

标签: python math python-2.7

我有两个数组,

a = [3, 6, 8, 2, 5, 5]
b = [2, 7, 9]

我需要创建一个新的数组c,它接受​​这些值并添加如下:a[0+0]*b[0] + a[0+1]*b[1] + a[0+2]*b[2] = (3*2) + (6*7) + (9*8) = 6 + 42 + 72,这意味着c[0] = 120

我完全迷失了如何做到这一点,让我指向正确的方向会很棒。

4 个答案:

答案 0 :(得分:1)

total = 0
for n in range(0, min(len(a), len(b))):
    total += a[n] * b[n]

range function

答案 1 :(得分:1)

如果c[k] = a[k+0]*b[0] + a[k+1]*b[1] + a[k+2]*b[2]

然后

>>> c = [sum(i*j for i,j in zip(a[k:], b)) for k in range(4)]
>>> c
[120, 86, 75, 84]

答案 2 :(得分:1)

我认为这会做你想要的。它借用了@ DukeSilver的答案中的一些代码,并使其构建了一个列表,而不仅仅是计算单个值。我的假设是a总是比b长。

c = [sum(a[i+j]*b[j] for j in range(len(b))) for i in range(len(a) - len(b) + 1)]

答案 3 :(得分:0)

numpy.convolve或者您想编写自己的函数吗?