三维矩阵元素与二维矩阵副本的元素倍增有效吗?

时间:2013-11-16 14:44:09

标签: python arrays numpy matrix

我想将[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)

1 个答案:

答案 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)