Numpy 数组: 对 N 维矩阵的某一维进行乘法运算

4

我有一个形状为[M,N,3]的3D numpy数组a,和一个形状为[M,N]的2D数组b。 我想将a第三维中的每个值与b相应位置上的值相乘,目前我的方法如下:

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

我在想是否有一种单行的方法来实现这个功能。
谢谢!
1个回答

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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接