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

问题描述 投票:0回答:4

如果我有两个不同大小的 numpy 数组,如何将它们叠加。

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

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

这是我的一般性问题。作为背景,我专门应用了格林变换函数,并且需要将评估中每个时间步的结果叠加到之前累积的响应上。

python numpy linear-algebra
4个回答
39
投票

这可能就是您正在寻找的

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

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


17
投票

如果你知道

b
是更高维度,那么:

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

就是您所需要的。


3
投票

与上面的非常相似,但更紧凑一点:

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

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 有一个用于此类无限维向量运算的完整模块:

numpy.polynomial

只需确保不要使用旧版

numpy.polyadd
包中的
numpy.poly1d
,因为它们以相反的顺序处理系数的顺序。

© www.soinside.com 2019 - 2024. All rights reserved.