Numpy 将两个不同大小的向量相加

发布于 2024-12-11 13:46:11 字数 241 浏览 0 评论 0原文

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

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

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

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

If I have two numpy arrays of different sizes, how can I superimpose them.

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

What is the cleanest way to add these two vectors to produce a new vector (20, 40, 60, 80, 60, 70)?

This is my generic question. For background, I am specifically applying a Green's transform function and need to superimpose the results for each time step in the evaulation unto the responses previously accumulated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

审判长 2024-12-18 13:46:11

这可能就是您要寻找的内容,

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

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

This could be what you are looking for

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

basically you copy the longer one and then add in-place the shorter one

你是我的挚爱i 2024-12-18 13:46:11

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

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

就是您所需要的。

If you know that b is higher dimension, then:

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

is all you need.

伴梦长久 2024-12-18 13:46:11

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

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

Very similar to the one above, but a little more compact:

l = sorted((a, b), key=len)
c = l[1].copy()
c[:len(l[0])] += l[0]
甜柠檬 2024-12-18 13:46:11

您所描述的是多项式加法,其实现为 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 包,因为它们以相反的顺序处理系数的顺序。

What you are describing is polynomial addition, that is implemented as 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 has a whole module for such infinite dimensional vector operations: numpy.polynomial.

Just make sure to not use numpy.polyadd from the legacy numpy.poly1d package, as they treat the order of coefficients in reversed order.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文