添加两个维度不兼容且无法广播的数组
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
更具可读性。
这似乎应该是一个简单的操作,但对于我来说我无法弄清楚。我有两个形状不兼容的数组,无法一起广播。
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
更具可读性。