首页 > 解决方案 > Numpy乘以N维矩阵的一维

问题描述

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

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

我想知道是否有一种单行方式来实现这一点。

谢谢!

标签: pythonnumpy

解决方案


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]

推荐阅读