首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy:将两个一维数组相加得到一个二维数组

Numpy:将两个一维数组相加得到一个二维数组
EN

Stack Overflow用户
提问于 2020-05-19 16:21:55
回答 2查看 282关注 0票数 1

假设我有两个一维数组(a和b),我想逐个元素地对它们求和,以创建一个二维数组(c)。2D数组的维数为(n,m),其中n是a的长度,m是b的长度。精确的关系是: ci = ai+bj,其中i从0到n-1,j从0到m-1。例如,考虑以下代码

代码语言:javascript
运行
复制
a = np.asarray([1,2,3])
b = np.asarray([1,2])
c = a+b

这段代码给了我广播错误。目标是得到c= [2,3,3,4,4,5]。显然,我们可以使用循环来获取c的每个元素,但我正在寻找一种不需要循环的方法。

EN

回答 2

Stack Overflow用户

发布于 2020-05-19 16:27:34

代码语言:javascript
运行
复制
(u + v).shape == (3, 2)

,我们需要:

代码语言:javascript
运行
复制
u.shape == (3, 1)
v.shape == (1, 2)

因此,完成此操作的最简单方法是创建一个新轴:

代码语言:javascript
运行
复制
a = np.array([1, 2, 3])
b = np.array([1, 2])
c = a[..., np.newaxis] + b[np.newaxis, ...]
票数 2
EN

Stack Overflow用户

发布于 2020-05-19 16:42:42

另一种方法是使用另一个数组的长度对数组进行tile。请注意,我采用了np.tile(b, (len(a), 1)).T的转置。

代码语言:javascript
运行
复制
import numpy as np

a = np.asarray([1,2,3])
b = np.asarray([1,2])
c = np.tile(a, (len(b), 1)) + np.tile(b, (len(a), 1)).T

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61886419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档