In [73]:
def matrix_mult(a,b):
'''
>>> matrix_mult([[3,2],[4,5]], [[1,-1],[-2,-3]])
[[-1, -9], [-6, -19]]
>>> matrix_mult([[2,0,-1],[3,4,5]], [[4,1],[5,0],[-2,-1]])
[[10, 3], [22, -2]]
>>> matrix_mult([[1,2,4],[2,1,3]], [[1,2,3],[8,3,2],[2,1,4]])
[[25, 12, 23], [16, 10, 20]]
'''
#assert len(a) == len(b[0])
mout = []
m = len(a) # Len of rows (a)
n = len(b[0]) # Len of cols (b)
for x in range(m):
colres =[]
for y in range(n):
row = [e for e in a[x]]
col = [e[y] for e in b]
num = sum([q*w for q,w in zip(row, col)])
#print(num)
colres.append(num)
mout.append(colres)
return mout
if __name__ == '__main__':
import doctest
doctest.testmod()
In [72]:
a = [[3,2],[4,5]]
b = [[1,-1],[-2,-3]]
matrix_mult(a,b)
a = [[1,2,4],[2,1,3]]
b = [[1,2,3],[8,3,2],[2,1,4]]
matrix_mult(a,b)
matrix_mult([[2,0,-1],[3,4,5]], [[4,1],[5,0],[-2,-1]])
Out[72]: