将N维矩阵的一维乘以Numpy

时间:2019-10-13 19:18:52

标签: python numpy

我有一个形状为a的3D numpy数组[M, N, 3]和一个形状为b的2D数组[M, N]。我想将a的第3维中的3个值中的每一个乘以b中的相应值,我目前正在这样做:

a[:,:,0] *= b
a[:,:,1] *= b
a[:,:,2] *= b

我想知道是否有单行方法来实现这一目标。

谢谢!

1 个答案:

答案 0 :(得分:2)

a * b[:,:,np.newaxis]可以做到:

In [37]: a
Out[37]:
array([[[1, 2, 3],
        [4, 5, 6]]])

In [38]: b
Out[38]: array([[4, 5]])

In [39]: a * b[:,:,np.newaxis]
Out[39]:
array([[[ 4,  8, 12],
        [20, 25, 30]]])

还有其他表达同一事物的方式,例如

  • a * np.expand_dims(b, 2)
  • a * b[..., np.newaxis]
相关问题