1

タイトルによれば、基本的に2番目の行列が必要です)を第1の行列(これを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) 

そして、私は結果があなたがBに新しい軸を与える必要があります。この場合には動作する放送用

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

答えて

1

になりたい:

>>> 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です。

関連する問題