Signup/Sign In

Python program for Matrix Product

In this tutorial, you will learn to find matrix products in Python. A matrix is a two-dimensional data structure where numbers are arranged into rows and columns.

Python does not have a built-in type for matrices but we can treat a nested list or list of a list as a matrix. The List is an ordered set of elements enclosed in square brackets [ ]. Each element in the list will be then treated as a row of matrix.

Matrix product is simply the dot product of two matrices. The dot product is where we multiply matching members of a matrix and sum up them. We have to find this product in our tutorial.

Input:

A=[ [1,2], [3,4] ]

B=[ [1,3], [2,5] ]

Output: [ [5, 13], [11, 29] ]

To find the product of two matrices in Python, we can follow these approaches-

  1. By using nested loops for matrix product
  2. Nested list comprehension for matrix product
  3. By using dot() in numpy module for matrix product

Approach 1: nested loops

For this approach, we will use nested loops which are simply a loop within a loop, to multiply the matrices and store them in a resultant matrix. We will use three loops, the first loop will be for iterating through rows of matrix A and the second loop will be for iterating through the columns of matrix A and the third loop will iterate the rows of matrix B.

Algorithm

Follow the algorithm to understand the approach better.

Step 1- Define a function that will multiply two matrixes

Step 2- In the function declare a list that will store the result list

Step 3- Iterate through the rows and columns of matrix A and the row of matrix B

Step 4- Multiply the elements in the two matrices and store them in the result list

Step 5- Print the resultant list

Step 6- Declare and set values for two matrices

Step 7- Call the function, the result will be printed

Python Program 1

Look at the program to understand the implementation of the above-mentioned approach. This program will work for a 3x3 matrix.

def Multiply(A,B):
    result=[ [0,0,0],[0,0,0],[0,0,0] ]
    #for rows
    for i in range(len(A)):
        #for columns
        for j in range(len(B[0])):
            #for rows of matrix B
            for k in range(len(B)):
                result[i][j] += A[i][k] * B[k][j]

    for p in result:
        print(p)
    return 0

A = [ [1, 2, 3],[6, 7, 4], [8, 10, 11] ]
B = [[1, 5, 3],[2, 6, 5], [7, 4, 9] ]

print("Result: ")
Multiply(A,B)


Result:
[26, 29, 40]
[48, 88, 89]
[105, 144, 173]

Approach 2: nested list comprehension

List comprehension is a shorter syntax for creating a new list based on the values of an existing list. We will store the product of the two matrices and store it in a new list. We will use nested list comprehension to iterate through each element in the matrix. List comprehension allows us to write concise codes in Python.

Algorithm

Follow the algorithm to understand the approach better.

Step 1- Define a function that will add two matrixes

Step 2- In the function declare a list that will store the result

Step 3- Through list comprehension multiply the corresponding elements and store them in the result list

Step 4- Print the resultant list

Step 5- Declare and set values for two matrices

Step 6- Call the function, the result will be printed

Python Program 2

Look at the program to understand the implementation of the above-mentioned approach. This program will work for a 3x3 matrix.

def Multiply(X,Y):
    result=[ [0,0,0],[0,0,0],[0,0,0] ]
    result= [[sum(a*b for a,b in zip(X_row,Y_col)) for Y_col in zip(*Y)] for X_row in X]
    for k in result:
              print(k)              
    return 0

A = [ [6, 7, 2],[3, 5, 4], [1, 2, 3] ]  
B = [[1, 5],[2, 5],[6, 3]]

print("Result: ")
Multiply(A,B)


Result:
[32, 71]
[37, 52]
[23, 24]

Approach 3: using NumPy module

Numpy module is a python package for the computation and processing of the multidimensional and single-dimensional list elements. The dot() function in this module calculates the dot product of the matrices.

Algorithm

Follow the algorithm to understand the approach better.

Step 1- Import NumPy module

Step 2- Declare and set values for two matrices

Step 3- Declare result list

Step 4- Use the dot() function to find the product of the matrix

Step 6- Store the product in the result

Step 7- Print the resultant list

Python Program 3

Look at the program to understand the implementation of the above-mentioned approach.

import numpy as np

A = [[12, 7, 3], [4, 5, 6], [7, 8, 9]]
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]]
result= np.dot(A,B)

for p in result:
    print(p)


[114 160 60 27]
[74 97 73 14]
[119 157 112 23]

Conclusion

In this tutorial, we have learned three ways for multiplying the two matrices in Python. We have learned how to use nested loops, list comprehension, and the NumPy module in Python.