如果我有两个不同大小的 numpy 数组,如何将它们叠加。
a = numpy([0, 10, 20, 30])
b = numpy([20, 30, 40, 50, 60, 70])
将这两个向量相加以生成新向量(20、40、60、80、60、70)的最简洁方法是什么?
这是我的一般性问题。作为背景,我专门应用了格林变换函数,并且需要将评估中每个时间步的结果叠加到之前累积的响应上。
这可能就是您正在寻找的
if len(a) < len(b):
c = b.copy()
c[:len(a)] += a
else:
c = a.copy()
c[:len(b)] += b
基本上你复制较长的一个,然后添加较短的一个
如果你知道
b
是更高维度,那么:
>>> a.resize(b.shape)
>>> c = a+b
就是您所需要的。
与上面的非常相似,但更紧凑一点:
l = sorted((a, b), key=len)
c = l[1].copy()
c[:len(l[0])] += l[0]
numpy.polynomial.polynomial.polyadd
:
>>> from numpy.polynomial.polynomial import polyadd
>>> a = [0, 10, 20, 30]
>>> b = [20, 30, 40, 50, 60, 70]
>>> polyadd(a, b)
array([20., 40., 60., 80., 60., 70.])
numpy.polynomial
。
numpy.polyadd
包中的 numpy.poly1d
,因为它们以相反的顺序处理系数的顺序。