arrays - Numpy:将两个一维数组相加得到一个二维数组
问题描述
假设我有两个 1D 数组(a 和 b),我想将它们按元素求和以创建一个 2D 数组(c)。二维数组的维度为 (n,m),其中 n 是 a 的长度,m 是 b 的长度。精确的关系为:c[i][j] = a[i]+b[j],其中 i 从 0 运行到 n-1,j 从 0 运行到 m-1。例如,考虑以下代码
a = np.asarray([1,2,3])
b = np.asarray([1,2])
c = a+b
这段代码给了我广播错误。目标是得到 c = [[2,3],[3,4],[4,5]]。显然我们可以使用循环来获取 c 的每个元素,但我正在寻找一种方法来做到这一点而无需通过循环。
解决方案
为了
(u + v).shape == (3, 2)
, 我们需要:
u.shape == (3, 1)
v.shape == (1, 2)
因此,最简单的方法是创建一个新轴:
a = np.array([1, 2, 3])
b = np.array([1, 2])
c = a[..., np.newaxis] + b[np.newaxis, ...]
推荐阅读
- javascript - 使用 javascript 将网页滚动到给定位置(在表格内)
- c# - 无法调用类的方法c#
- android - 如何每天只运行一次代码?
- c# - Specflow.json - 将 app.config 转换为 specflow.json
- haskell - 为复杂类型创建任意实例
- php - 对包含来自 Gmail 电子邮件的表情符号的电子邮件正文使用 forceUTF8 会将表情符号转换为“?” 什么类型的表情符号是 Gmail 表情符号?
- java - 用于查找表的 Java JPA Spring 多重查询
- r - 按组对大于当前值的值求和
- apache-nifi - JSON属性上的NiFi路由
- python - 即使安装了 pygame,我也无法加载图像