Here are two matrices that are multiplied with the result:
1 2 3 10 20 30 40 380 440 500 560 4 5 6 . 50 60 70 80 = 830 980 1130 1280 7 8 9 90 100 110 120 1280 1520 1760 2000 10 11 12 1730 2060 2390 2720
Here is the Python code that multipies the matrices:
product = [[sum(a * b for a, b in zip(aa, bb)) for bb in BT] for aa in A]
Matrix A and matrix BT need to have the same dimensions and the same orientation (rotation). Here is a full example:
A = [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12] ] B = [ [10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120] ] BT = list(zip(*B)) # transpose B assert(len(A) == len(BT)) # assert that dimensions assert(len(A[0]) == len(BT[0])) # of A and BT are the same product = [[sum(a * b for a, b in zip(aa, bb)) for bb in BT] for aa in A] for p in product: print(p)
[380, 440, 500, 560] [830, 980, 1130, 1280] [1280, 1520, 1760, 2000] [1730, 2060, 2390, 2720]
In an earlier post, I showed how to transpose a matrix with list comprehensions. It turns out that zip(*MATRIX) also transposes a matrix.