首页 > 解决方案 > 在numpy上将矩阵乘以数组元素?

问题描述

我想要的真的很简单,但我不知道如何在 numpy 上做到这一点。

我有以下矩阵:

M = [[1, 1, 1],
     [1, 1, 1],
     [1, 1, 1]]

而这个数组:

A = [1, 2, 3]

我想将矩阵与数组上的每个元素相乘以产生:

[[[1, 1, 1],
  [1, 1, 1],
  [1, 1, 1]],
 [[2, 2, 2],
  [2, 2, 2],
  [2, 2, 2]],
 [[3, 3, 3],
  [3, 3, 3],
  [3, 3, 3]]]

没有任何 for 循环,我只想要一个 numpy 函数。

标签: pythonnumpy

解决方案


使用einsum

np.einsum('ij,k->kji', M, A)

array([[[1, 1, 1],
        [1, 1, 1],
        [1, 1, 1]],

       [[2, 2, 2],
        [2, 2, 2],
        [2, 2, 2]],

       [[3, 3, 3],
        [3, 3, 3],
        [3, 3, 3]]])

推荐阅读