Under numpy I want to perform a “usual” matrix multiplication like this:
C=A*B
where
A is a “2D-kind” Matrix, but each matrix element has shape (1,5)
and
B is a “1D-kind” Vector, but each vector element element has shape (20,5)
The result
C shall be a “1D-kind” Vector, but each vector element element again has shape (20,5)
I tried to produce the elements C1 and C2 of C manually:
>>> A.shape
(2, 2, 1, 5)
>>> B.shape
(2, 20, 5)
>>> C0 = A[0,0]*B[0]+A[0,1]*B[1]
>>> C0.shape
(20, 5)
>>> C1 = A[1,0]*B[0]+A[1,1]*B[1]
>>> C1.shape
(20, 5)
>>>
Broadcasting (1,5) from A with (20,5) of B works as expected.
However, I was not able to find out, how this can be written like a matrix multiplication:
C = np.matmul(A, B)
Of course this doesn’t work because numpy can’t know what indices I want to sum over. But I guess that some simple “numpythonic” solution must exist…