1

正如標題所說,我基本上要第二矩陣(我們稱之爲過b )是乘法的第一矩陣的行(我們稱之爲A)的列表。的Python:乘以(4,1,2)與(4,1) - 陣列得到(4,1,2)陣列

我該如何去做這件事? 例子:

A = np.array([[[ 1., 3.]], 
    [[ 1., 4.]], 
    [[ 1., 5.]], 
    [[ 1., 8.]]]) 

B = np.array([[0], 
    [1], 
    [3], 
    [8]], dtype=np.int64) 

而且我要的結果是

C = np.array([[[0., 0.,]], 
    [[1., 4.]], 
    [[3., 15.]], 
    [[8., 64.]]]) 

回答

1

對於廣播在這種情況下工作,你需要給B一個新的軸心:

>>> A * B[:,None,:] 
array([[[ 0., 0.]], 
     [[ 1., 4.]], 
     [[ 3., 15.]], 
     [[ 8., 64.]]]) 
+1

相當於'A * B [:, np.newaxis,:]'。 –

+0

太好了!這工作! – user3726242

0

你可能會發現np.einsum()是與n維數組是有用的。在這種情況下,你可以做

np.einsum('i...,i...->i...',A,B) 

得到你想要的答案。

np.einsum('ijk,il->ijk',A,B) 

也有效,並且更明確。在np.einsum()

更多細節可以發現here