Numpy添加两个不同大小的向量

时间:2011-10-25 15:28:04

标签: python numpy linear-algebra

如果我有两个不同大小的numpy数组,我怎样才能叠加它们。

a = numpy([0, 10, 20, 30])
b = numpy([20, 30, 40, 50, 60, 70])

添加这两个向量以生成新向量(20,40,60,80,60,70)的最简洁方法是什么?

这是我的一般性问题。对于背景,我特别应用格林变换函数,需要将评估中每个时间步的结果叠加到先前累积的响应中。

3 个答案:

答案 0 :(得分:23)

这可能就是你要找的东西

if len(a) < len(b):
    c = b.copy()
    c[:len(a)] += a
else:
    c = a.copy()
    c[:len(b)] += b

基本上你复制较长的一个然后就地添加较短的一个

答案 1 :(得分:12)

如果你知道b是更高维度,那么:

>>> a.resize(b.shape)
>>> c = a+b

就是你所需要的一切。

答案 2 :(得分:0)

与上面的非常相似,但是更加紧凑:

l = sorted((a, b), key=len)
c = l[1].copy()
c[:len(l[0])] += l[0]