我有一个形状为[M,N,3]
的3D numpy数组a
,和一个形状为[M,N]
的2D数组b
。 我想将a
第三维中的每个值与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.expand_dims(b, 2)
。a * b[..., np.newaxis]