我想将[i,j]
2D矩阵(比如MxN
)的每个元素(比如A
)乘以3D矩阵的3D行中的所有元素(比如说{ {1}}),B
。以下内容没有帮助,因为它为我提供了B[i,j,:]
形状的矩阵,而不是(2,3,3)
。另外,我认为这样的乘法使副本变得多余。有没有更好的方法呢?
(3,3,2)
我期望的输出是:
B=np.ones((3,3,2))
A=np.arange(1,10).reshape(3,3)
c=np.tile(A,(2,1,1))
print np.multiply(a,c)
答案 0 :(得分:2)
如果传递给(9, 1, 2)
,您的预期输出(添加逗号后)将具有array
形状。假设这是一个错误,并且你确实需要一个具有这些值的形状(3,3,2)
数组,那么我认为您需要做的就是扩展A
:
>>> A = np.arange(1,10).reshape(3,3)
>>> B = np.ones((3,3,2))
>>> C = A[..., None] * B
>>> C
array([[[ 1., 1.],
[ 2., 2.],
[ 3., 3.]],
[[ 4., 4.],
[ 5., 5.],
[ 6., 6.]],
[[ 7., 7.],
[ 8., 8.],
[ 9., 9.]]])
>>> C.shape
(3, 3, 2)