Stephen Summerhayes Stephen Summerhayes - 7 months ago 62
Python Question

element wise matrix multiplication python

Hi I'm stuck on what on the face of it seems a simple problem, so I must be missing something!

I have a list (of indeterminate length) of matrices calculated from user values. - ttranspose

I also have another single matrix, Qbar which I would like to multiply (matrix form) each of the matrices in ttranspose, and output a list of the resultant matrices. << Which should be the same length as ttranspose.

def Q_by_transpose(ttranspose, Qmatrix):
Q_by_transpose = []
for matrix in ttranspose:
Q_by_transpose_ind = np.matmul(ttranspose, Qmatrix)
Q_by_transpose.append(Q_by_transpose_ind)
return (Q_by_transpose)


Instead when I test this with a list of 6 matrices (ttranspose) I get the a long list of mtrices, which appears to be in 6 arrays (as expected) but each array is made up of 6 matrices?

Im hoping to create a list of matrices for which I would then perform elementwise multiplication between this and another list. So solving this will help on both fronts!

Any help would be greatly appreciated!

I am new to Python and Numpy so am hopeful you guys will be able to help!

Thanks

FCo FCo
Answer

It appears that instead of passing a single matrix to the np.matmul function, you are passing the entire list of matrices. Instead of

for matrix in ttranspose:
    Q_by_transpose_ind = np.matmul(ttranspose, Qmatrix)
    Q_by_transpose.append(Q_by_transpose_ind)

do this:

for matrix in ttranspose:
    Q_by_transpose_ind = np.matmul(matrix, Qmatrix)
    Q_by_transpose.append(Q_by_transpose_ind)

This will only pass one matrix to np.matmul instead of the whole list. Essentially what you're doing right now is multiplying the entire list of matrices n times, where n is the number of matrices in ttranspose.