Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python program to multiply two matrices

  • Difficulty Level : Hard
  • Last Updated : 23 Apr, 2022

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 matrix
A = [[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 A
for 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 matrix
A = [[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 will be 3x4
result = [[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 matrix
A = [[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 will be 3x4
 
result= [[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.


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!