看看两个数组的形状:
>>> x.shape
(4, 3, 2)
>>> y.shape
(4, 2)
您会看到,添加需要沿着此处的第 0 个轴和最后一个轴广播。一个简单的选择是
>>> x + y[:, None, :]
array([[[ 2, 4],
[ 4, 6],
[ 6, 8]],
[[10, 12],
[12, 4],
[ 4, 6]],
[[ 8, 10],
[10, 12],
[12, 14]],
[[16, 8],
[ 8, 10],
[10, 12]]])
Where,
>>> y[:, None, :].shape
(4, 1, 2)
这实际上只是改变了步伐y
所以添加的内容可以被广播。
更好的是,使用np.expand_dims
正如 hpaulj 在评论中所建议的,这将添加一个额外的倒数第二个维度,所以你可以这样做
>>> x + np.expand_dims(y, 1)
array([[[ 2, 4],
[ 4, 6],
[ 6, 8]],
[[10, 12],
[12, 4],
[ 4, 6]],
[[ 8, 10],
[10, 12],
[12, 14]],
[[16, 8],
[ 8, 10],
[10, 12]]])