我有一个形状为a
的3D numpy数组[M, N, 3]
和一个形状为b
的2D数组[M, N]
。我想将a
的第3维中的3个值中的每一个乘以b
中的相应值,我目前正在这样做:
a[:,:,0] *= b
a[:,:,1] *= b
a[:,:,2] *= b
我想知道是否有单行方法来实现这一目标。
谢谢!
答案 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]