猿问

将 Numpy 数组中的所有行相乘

我有一个 MxN Numpy 数组。我想取数组的每一行并将其逐元素乘以数组的每一行,从而产生一个 MxMxN numpy 数组。


le_input = np.array([

    [0, 0, 1],

    [0, 1, 0]

])


le_expected_output = np.array([

    [

        [0, 0, 1],

        [0, 0, 0]

    ],

    [

        [0, 0, 0],

        [0, 1, 0]

    ]

])

我当然可以用 for 循环来做到这一点,我已经尝试过了,但我假设在 Numpy 中有一种更快的方法来做到这一点。有没有人有任何想法?


慕雪6442864
浏览 192回答 1
1回答

慕运维8079593

您可以使用np.einsum:np.einsum('ik,jk->ijk', le_input, le_input)# array([[[0, 0, 1],#         [0, 0, 0]],#        [[0, 0, 0],#         [0, 1, 0]]])或者创建一个新轴并使用数组的广播属性来计算第一维上的外积:le_input[:,None] * le_input# array([[[0, 0, 1],#         [0, 0, 0]],#        [[0, 0, 0],#         [0, 1, 0]]])
随时随地看视频慕课网APP

相关分类

Python
我要回答