簡體   English   中英

Python:將向量列表與矩陣列表相乘作為單個矩陣運算

[英]Python: Multiplying a list of vectors by a list of matrices as a single matrix operation

我有一個100個N-dimensional向量的列表和一個100 MxN矩陣的列表。 因此,您可以100xN兩個數據結構視為一個100xN列表(或numpy數組)和一個100xMxN列表(或numpy數組)。

我想做的是獲取每個向量及其對應矩陣的點積,這樣輸出應為100 M-dimensional矩陣(即100xM列表或numpy數組)。

但是,我不確定如何執行此操作。 由於效率的明顯原因,我不想重復進行此操作。 我也知道這不是基本的矩陣乘法。 我想我可能想使用np.einsum ,但是我對此不太熟悉。

有人願意幫助嗎?

您可以像這樣使用np.einsum

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

樣品運行-

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM