【发布时间】:2018-11-09 07:12:22
【问题描述】:
我想通过简单地沿一个或多个轴执行相同的加法来添加两个不同维度的数组。
非矢量化解决方案:
x = np.array([[[1,2],[3,4],[5,6]],[[7,8],[9,0],[1,2]],[[3,4],[5,6],[7,8]],[[9,0],[1,2],[3,4]]]) #shape (4,3,2)
y = np.array([[1,2],[3,4],[5,6],[7,8]]) #shape (4,2)
ans = np.copy(x)
for i in range(x.shape[1]):
ans[:,i] += y
print(ans) #shape (4,3,2)
我怎样才能沿着(例如)第二个轴广播这个?更一般地说,我怎样才能使这个广播沿任意轴?
【问题讨论】:
-
要将
y与x一起使用,您必须将其重塑为 (4,1,2)。广播规则有据可查。 -
你可以使用 repmat 或 tile 吗?
-
你只想广播一个维度吗?或者其中一个数组可以比另一个数组大 1 维以上?
-
这显然是stackoverflow.com/questions/53216750/numpy-add-along-first-axis 的续集。
y是 (3,2),所以广播需要 (1,3,2) 形状,这是自动的。