osdf osdf - 15 days ago 9
Python Question

Numpy: Multiplying a matrix with a 3d tensor -- Suggestion

I have a matrix

P
with shape
MxN
and a 3d tensor
T
with shape
KxNxR
. I want to multiply
P
with every
NxR
matrix in
T
, resulting in a
KxMxR
3d tensor.

P.dot(T).transpose(1,0,2)
gives the desired result. Is there a nicer solution (i.e. getting rid of
transpose
) to this problem? This must be quite a common operation, so I assume, others have found different approaches, e.g. using
tensordot
(which I tried but failed to get the desired result). Opinions/Views would be highly appreciated!

Answer
scipy.tensordot(P, T, axes=[1,1]).swapaxes(0,1)