添加两个维度不兼容且无法广播的数组

Add two arrays with incompatible dimensions that can't be broadcast

这似乎应该是一个简单的操作,但对于我来说我无法弄清楚。我有两个形状不兼容的数组,无法一起广播。

A1.shape == (2, 10, 10)
A2.shape == (2, 300)

我想沿第一个维度添加两个数组,以便结果是一个具有以下形状的数组:

Result.shape == (2, 10, 10, 300)

换句话说:

Result[0, 2, 3, 122] == A1[0, 2, 3] + A2[0, 122]
Result[1, 2, 3, 122] == A1[1, 2, 3] + A2[1, 122]

我可以在不使用循环的情况下进行矢量化吗?

要使 numpy 进行广播,您应该插入新的轴进行广播。 (这是Heisenbugs在评论中指出的)

Result = A1[:,:,:,np.newaxis] +A2[:,np.newaxis,np.newaxis,:]

注意np.newaxis is None,喜欢的可以写None。但我认为 np.newaxis 更具可读性。