matrix Multiplication
Roberto Bonvallet
Roberto.Bonvallet at cern.ch
Wed Oct 18 14:59:47 CEST 2006
Sssasss wrote:
> hi evrybody!
>
> I wan't to multiply two square matrixes, and i don't understand why it
> doesn't work.
> Could you explain me?
>
> def multmat(A,B):
> "A*B"
> if len(A)!=len(B): return "error"
Wrong validation here: you _can_ multiply two matrices with a different
number of rows! And instead of returning "error" you should raise an
exception.
[...]
I suggest using a linear algebra package, but if you insist in using lists
of lists:
>>> b = [[1, 2, 3, 4],
... [4, 5, 6, 7],
... [7, 8, 9, 10]]
>>>
>>> a = [[1, 2, 3],
... [4, 5, 6]]
>>>
>>> ab = [[sum(i*j for i, j in zip(row, col)) for col in zip(*b)] for row in a]
>>> ab
[[30, 36, 42, 48], [66, 81, 96, 111]]
Straightforward from the definition of matrix multiplication.
--
Roberto Bonvallet
More information about the Python-list
mailing list