Python 3D矩阵元素与2D矩阵副本的高效逐元素乘法?

Python 3D矩阵元素与2D矩阵副本的高效逐元素乘法?,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我想将MxN2D矩阵(比如a)的每个元素(比如[I,j])乘以3D矩阵(比如B)的3D行中的所有元素,因此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) 我期望的结果是: [[[1,1]],[[2,

我想将
MxN
2D矩阵(比如
a
)的每个元素(比如
[I,j]
)乘以3D矩阵(比如
B
)的3D行中的所有元素,因此
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)
我期望的结果是:

[[[1,1]],[[2,2]],[[3,3]],[[4,4]][[5,5]],[[6,6]],[[7,7]],[[8,8]],[[9,9]]]
如果传递到
array
,则预期输出(添加逗号后)将具有形状
(9,1,2)
。假设这是一个错误,并且您确实需要一个具有这些值的shape
(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)

我的代码不起作用。不能广播。。。我知道。。。