Press ESC to close

Write a Program to Perform Matrix Multiplication Efficiently in Python

Photo by VERPEX

You can efficiently perform matrix multiplication in Python using either native Python lists or by leveraging the numpy library, which is highly optimized for matrix operations.

Here’s how you can write both a basic matrix multiplication program and an efficient one using numpy.

1. Matrix Multiplication using Nested Loops (Basic Approach)

This approach is based on the definition of matrix multiplication using nested loops.

def matrix_multiply(A, B):
    # Get dimensions of matrices
    rows_A = len(A)
    cols_A = len(A[0])
    rows_B = len(B)
    cols_B = len(B[0])

    # Check if multiplication is possible
    if cols_A != rows_B:
        print("Matrix multiplication not possible")
        return None

    # Initialize the result matrix with zeroes
    result = [[0 for _ in range(cols_B)] for _ in range(rows_A)]

    # Multiply matrices
    for i in range(rows_A):
        for j in range(cols_B):
            for k in range(cols_A):
                result[i][j] += A[i][k] * B[k][j]

    return result

# Example usage
A = [[1, 2, 3],
     [4, 5, 6]]

B = [[7, 8],
     [9, 10],
     [11, 12]]

result = matrix_multiply(A, B)

if result:
    print("Resultant Matrix:")
    for row in result:
        print(row)

Explanation:

  • The function matrix_multiply(A, B) performs matrix multiplication by iterating through the rows of the first matrix A and columns of the second matrix B.
  • The result is stored in a new matrix result.
Example Output:
Resultant Matrix:
[58, 64]
[139, 154]

2. Efficient Matrix Multiplication using numpy

For larger matrices, the above nested loop method becomes inefficient. A more efficient approach is to use the numpy library, which is optimized for such operations and leverages low-level optimizations for fast computations.

Here’s how to do matrix multiplication using numpy:

import numpy as np

# Define matrices
A = np.array([[1, 2, 3],
              [4, 5, 6]])

B = np.array([[7, 8],
              [9, 10],
              [11, 12]])

# Perform matrix multiplication using numpy
result = np.dot(A, B)

# Output the result
print("Resultant Matrix:")
print(result)

Explanation:

  • The np.dot() function from the numpy library computes the matrix product.
  • numpy is optimized for numerical computations and uses highly efficient algorithms, making it suitable for large-scale matrix multiplication.
Example Output:
Resultant Matrix:
[[ 58  64]
 [139 154]]

Why is numpy Efficient?

  • Optimized for performance: numpy is written in C and makes use of efficient memory management and parallelism.
  • Precompiled operations: numpy operations are optimized to use CPU-level SIMD instructions and multi-threading where possible.

Conclusion:

For small matrices or educational purposes, the nested loop approach works fine, but for large-scale matrix multiplication, it’s highly recommended to use numpy due to its efficiency and ease of use.

Leave a Reply

Your email address will not be published. Required fields are marked *