Skip to main content
 首页 » 编程设计

Python:将向量列表乘以矩阵列表作为单个矩阵运算

2025年05月04日16webabcd

我有一个包含 100 个 N 维 向量的列表和一个包含 100 MxN 矩阵的列表。因此,您可以将这两个数据结构视为一个 100xN 列表(或 numpy 数组)和一个 100xMxN 列表(或 numpy 数组)。

我想做的是对每个向量及其对应的矩阵进行点积,这样输出应该是 100 M 维 矩阵(即 100xM列表或 numpy 数组)。

但是,我不太确定该怎么做。出于明显的效率原因,我不想迭代地进行。我也知道这不是基本的矩阵乘法。我想我可能想使用 np.einsum,但我不太熟悉它。

有人愿意帮忙吗?

请您参考如下方法:

您可以使用 np.einsum像这样 -

np.einsum('ij,ikj->ik',a,b) 

sample 运行-

In [42]: M,N = 3,4 
 
In [43]: a = np.random.rand(100,N) 
 
In [44]: b = np.random.rand(100,M,N) 
 
In [45]: np.einsum('ij,ikj->ik',a,b).shape 
Out[45]: (100, 3) 

您也可以使用 np.matmul 或 @ 运算符(Python 3.x),尽管它似乎比 einsum 慢一点 -

np.matmul(a[:,None],b.swapaxes(1,2))[:,0]