
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Multiply Two Matrices Using Multi-Dimensional Arrays in Python
A matrix is a set of numbers arranged in rows and columns. A matrix with m rows and n columns is called an m X n matrix and m and n are called its dimensions. A matrix is a two dimensional array, which is created by using lists or NumPy arrays in python.
In general, Matrix multiplication can be done by multiplying the rows of the first matrix by the column of the second matrix. Here, the number of columns of the first matrix should be equal to the number of rows of the second matrix.
Input Output Scenarios
Assuming we have two matrices A and B and these two matrices have 2X3 and 3X2 dimensions respectively. After multiplying the resultant matrix will have 2 rows and 1 column.
[b1, b2] [a1, a2, a3] * [b3, b4] = [a1*b1+a2*b2+a3*a3] [a4, a5, a6] [b5, b6] [a4*b2+a5*b4+a6*b6]
Also, we can do element-wise multiplication of matrices. In this case, the number of rows and columns of two input matrices must be the same.
[a11, a12, a13] [b11, b12, b13] [a11*b11, a12*b12, a13*b13] [a21, a22, a23] * [b21, b22, b23] = [a21*b21, a22*b22, a23*b23] [a31, a32, a33] [b31, b32, b33] [a31*b31, a32*b32, a33*b33]
Using For Loop
With a nested for loop, we will execute the multiplication operation on two matrices and store the result in the third matrix.
Example
In this example, we will initialize a result matrix with all zero's to store the multiplication results.
# Defining the matrix using multidimensional arrays matrix_a = [[1,2,3], [4,1,2], [2,3,1]] matrix_b = [[1,2,3,2], [2,3,6,3], [3,1,4,2]] #function for displaying matrix def display(matrix): for row in matrix: print(row) print() # Display two input matrices print('The first matrix is defined as:') display(matrix_a) print('The second matrix is defined as:') display(matrix_b) # Initializing Matrix with all 0s result = [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]] # multiply two matrices for i in range(len(matrix_a)): # iterate through rows for j in range(len(matrix_b[0])): # iterate through columns for k in range(len(matrix_b)): result[i][j] = matrix_a[i][k] * matrix_b[k][j] print('The multiplication of two matrices is:') display(result)
Output
The first matrix is defined as: [1, 2, 3] [4, 1, 2] [2, 3, 1] The second matrix is defined as: [1, 2, 3, 2] [2, 3, 6, 3] [3, 1, 4, 2] The multiplication of two matrices is: [9, 3, 12, 6] [6, 2, 8, 4] [3, 1, 4, 2]
The number of rows and columns of the first matrix (matrix_a) is 3, and the number of rows of the second matrix (matrix_b) is 3 and columns is 4. After multiplying these two matrices (matrix_a, matrix_b) the resultant matrix will have 3 rows and 4 columns (i.e, 3X4).
Example
Here the matrices are created using the numpy.array() function so that we can simply do the matrix multiplication using the @ operator.
import numpy as np # Defining the matrix using numpy array matrix_a = np.array([[1,2,5], [1,0,6], [9,8,0]]) matrix_b = np.array([[0,3,5], [4,6,9], [1,8,0]]) # Display two input matrices print('The first matrix is defined as:') print(matrix_a) print('The second matrix is defined as:') print(matrix_b) # multiply two matrices result = matrix_a @ matrix_b print('The multiplication of two matrices is:') print(result)
Output
The first matrix is defined as: [[1 2 5] [1 0 6] [9 8 0]] The second matrix is defined as: [[0 3 5] [4 6 9] [1 8 0]] The multiplication of two matrices is: [[ 13 55 23] [ 6 51 5] [ 32 75 117]]
The multiplication operator @ is available from Python 3.5+ versions, otherwise, we can use numpy.dot() function.
Example
In this example, we will perform an element-wise multiplication operation on two numpy arrays using the (*) asterisk operator.
import numpy as np # Defining the matrix using numpy array matrix_a = np.array([[1,2,5], [1,0,6], [9,8,0]]) matrix_b = np.array([[0,3,5], [4,6,9], [1,8,0]]) # Display two input matrices print('The first matrix is defined as:') print(matrix_a) print('The second matrix is defined as:') print(matrix_b) # multiply elements of two matrices result = matrix_a * matrix_b print('The element-wise multiplication of two matrices is:') print(result)
Output
The first matrix is defined as: [[1 2 5] [1 0 6] [9 8 0]] The second matrix is defined as: [[0 3 5] [4 6 9] [1 8 0]] The element-wise multiplication of two matrices is: [[ 0 6 25] [ 4 0 54] [ 9 64 0]]