[英]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.