Python N维矩阵的一维数乘

Python N维矩阵的一维数乘,python,numpy,Python,Numpy,我有一个形状为[M,N,3]的3D numpy数组a,还有一个形状为[M,N]的2D数组b。我想将a第三维中的3个值分别乘以b中的相应值,我目前正在这样做: a[:,:,0]*=b a[:,:,1]*=b a[:,:,2]*=b 我想知道是否有一个单一的方式来实现这一点 谢谢 a*b[:,:,np.newaxis]可以: In [37]: a Out[37]: array([[[1, 2, 3], [4, 5, 6]]]) In [38]: b Out[38]: array(

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

a[:,:,0]*=b
a[:,:,1]*=b
a[:,:,2]*=b
我想知道是否有一个单一的方式来实现这一点


谢谢

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.展开(b,2)
  • a*b[…,np.newaxis]