Home >Backend Development >Python Tutorial >Python program to multiply two matrices using multidimensional arrays

Python program to multiply two matrices using multidimensional arrays

WBOY
WBOYforward
2023-09-11 17:09:07694browse

Python program to multiply two matrices using multidimensional arrays

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 created in Python using lists or NumPy arrays.

In general, matrix multiplication can be done by multiplying the rows of the first matrix by the columns 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 and output scenarios

Suppose we have two matrices A and B, the dimensions of these two matrices are 2X3 and 3X2 respectively. The resulting matrix after multiplication 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]

In addition, we can also perform element-wise multiplication of matrices. In this case, the two input matrices must have the same number of rows and columns.

[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]

Use For Loop

With nested for loops, we will perform a multiplication operation on two matrices and store the result in the third matrix.

Example

In this example, we will initialize an all-zero result matrix 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 and columns of the second matrix (matrix_b) is 3. The resulting matrix after multiplying these two matrices (matrix_a, matrix_b) will have 3 rows and 4 columns (i.e. 3X4).

Example

The numpy.array() function is used here to create the matrix so that we can simply do 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 starting from Python 3.5 version, otherwise, we can use the numpy.dot() function.

Example

In this example, we will perform element-wise multiplication of 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]]

The above is the detailed content of Python program to multiply two matrices using multidimensional arrays. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete