我该怎么做2d 3d乘法

时间:2018-01-23 16:01:56

标签: python arrays numpy

我有两个数组一是3d:

np.array([[[1,2,3],[3,2,1]],
          [[2,3,2],[1,2,5]]])

和一个2d数组:

np.array([[2,3],
          [3,4]])

我希望将这两个相乘得到

np.array([[[2,4,6],[9,6,3]],
          [[6,9,6],[4,8,20]]])

如何使用numpy包来做到这一点?感谢。

2 个答案:

答案 0 :(得分:3)

使用broadcasting

In [129]: b[:,:,None] * a
Out[129]: 
array([[[ 2,  4,  6],
        [ 9,  6,  3]],

       [[ 6,  9,  6],
        [ 4,  8, 20]]])

答案 1 :(得分:0)

以下名称:

main = np.array([[[1,2,3],[3,2,1]],
                 [[2,3,2],[1,2,5]]])
fac = np.array([[2,3],
                [3,4]])

它可以通过迭代进行管理,如下所示:

a1 = []
for i in [0,1]:
    a2 = []
    for j in [0,1]:
            a2.append(main[i][j]*fac[i][j]) 
    a1.append(a2)

print(a1)

输出:

[[array([2, 4, 6]), array([9, 6, 3])], [array([6, 9, 6]), array([ 4,  8, 20])]]