Python program to multiply two matrices
Given two matrix the task is that we will have to create a program to multiply two matrices in python.
Examples:
Input : X = [[1, 7, 3],
[3, 5, 6],
[6, 8, 9]]
Y = [[1, 1, 1, 2],
[6, 7, 3, 0],
[4, 5, 9, 1]]
Output : [55, 65, 49, 5]
[57, 68, 72, 12]
[90, 107, 111, 21]
Using Simple Nested Loops
In this program we have to use nested for loops to iterate through each row and each column.
Python3
# Program to multiply two matrices using nested loops# take a 3x3 matrixA = [[12, 7, 3], [4, 5, 6], [7, 8, 9]]# take a 3x4 matrix B = [[5, 8, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]] result = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]# iterating by row of Afor i in range(len(A)): # iterating by column by B for j in range(len(B[0])): # iterating by rows of B for k in range(len(B)): result[i][j] += A[i][k] * B[k][j]for r in result: print(r) |
Output:
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
Time Complexity: O(M*M*N), as we are using nested loop traversing, M*M*N.
Auxiliary Space: O(M*N), as we are using a result matrix which is extra space.
Method 2: Matrix Multiplication Using Nested List. We use zip in Python.
Python3
# Program to multiply two matrices using list comprehension# take a 3x3 matrixA = [[12, 7, 3], [4, 5, 6], [7, 8, 9]]# take a 3x4 matrixB = [[5, 8, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]]# result will be 3x4result = [[sum(a * b for a, b in zip(A_row, B_col)) for B_col in zip(*B)] for A_row in A]for r in result: print(r) |
Output:
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
Time Complexity: O(M*M*N), as we are using nested loop traversing, M*M*N.
Auxiliary Space: O(M*N), as we are using a result matrix which is extra space.
Method 3: Matrix Multiplication (Vectorized implementation).
Python3
# Program to multiply two matrices (vectorized implementation)# Program to multiply two matrices (vectorized implementation)import numpy as np# take a 3x3 matrixA = [[12, 7, 3], [4, 5, 6], [7, 8, 9]]# take a 3x4 matrixB = [[5, 8, 1, 2], [6, 7, 3, 0], [4, 5, 9, 1]]# result will be 3x4result= [[0,0,0,0], [0,0,0,0], [0,0,0,0]]result = np.dot(A,B)for r in result: print(r) |
Output:
[114, 160, 60, 27] [74, 97, 73, 14] [119, 157, 112, 23]
Time Complexity: O(M*M*N), as we are using nested loop traversing, M*M*N.
Auxiliary Space: O(M*N), as we are using a result matrix which is extra space.



