In this tutorial, we will see how to do Numpy Matrix Multiplication using NumPy library.

NumPy Multiplication:

Let’s say we have two 2-d arrays say arr1 and arr2, then if we do arr1*arr2 then it does element-wise multiplication, just like below.

import numpy as np

arr1 = np.array([[1,2,3],[1,2,3]])
arr2 = np.array([[4,5,6],[4,5,6]])

print(arr1*arr2)

Output:

[[ 4 10 18]
 [ 4 10 18]]

Above program does a simple arithmetic operation on two NumPy arrays, but it’s not exactly as the matrix multiplication, then the simple arithmetic operation won’t help us, so we have to look into the NumPy library features.

Numpy Matrix Multiplication:

In matrix multiplication, the result at each position is the sum of products of each element of the corresponding row of the first matrix with the corresponding element of the corresponding column of the second matrix. To perform matrix multiplication of 2-d arrays, NumPy defines dot operation. The dot() can be used as both a function and a method.

Let’s create a 3*3 matrix using NumPy

import numpy as np

arr1=np.arange(0,9).reshape(3,3)
print("First matrix is:")
print(arr1)
arr2=np.arange(1,10).reshape(3,3)
print("second matrix is:")
print(arr2)

Output:

First matrix is:
[[0 1 2]
 [3 4 5]
 [6 7 8]]
second matrix is:
[[1 2 3]
 [4 5 6]
 [7 8 9]]

dot() function:

When we use dot() as a function to perform matrix multiplication of 2-d arrays arr1 and arr2, both arr1 and arr2 are passed as parameters to np.dot() function and the result is assigned to a third array arr3

import numpy as np

arr1=np.arange(0,9).reshape(3,3)
print("First matrix is:")
print(arr1)
arr2=np.arange(1,10).reshape(3,3)
print("second matrix is:")
print(arr2)

arr3=np.dot(arr1,arr2)
print("matrix product of arr1 and arr2 is:")
print(arr3)

Output:

First matrix is:
[[0 1 2]
 [3 4 5]
 [6 7 8]]
second matrix is:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
matrix product of arr1 and arr2 is:
[[ 18  21  24]
 [ 54  66  78]
 [ 90 111 132]]

dot() method:

While using dot() as a method, we pass array arr2 as a parameter to arr1.dot() method.

import numpy as np

arr1=np.arange(0,9).reshape(3,3)
print("First matrix is:")
print(arr1)
arr2=np.arange(1,10).reshape(3,3)
print("second matrix is:")
print(arr2)

arr4=arr1.dot(arr2)
print("Result : ",arr4)

Output:

First matrix is:
[[0 1 2]
 [3 4 5]
 [6 7 8]]
second matrix is:
[[1 2 3]
 [4 5 6]
 [7 8 9]]
Result :  [[ 18  21  24]
 [ 54  66  78]
 [ 90 111 132]]

References:

Happy Learning 🙂