We can implement a Python Matrix in the form of a **2-d List** or a **2-d Array**. **To perform operations on Python Matrix, we need to import Python NumPy Module.**

Python Matrix is essential in the field of statistics, data processing, image processing, etc.

## Creation of a Python Matrix

Python Matrix can be created using one of the following techniques:

**By using Lists****By using arange() method****By using matrix() method**

### 1. Creation of matrix using Lists

The `numpy.array()`

function can be used to create an array using **lists as input to it**.

**Example:**

import numpy input_arr = numpy.array([[ 10, 20, 30],[ 40, 50, 60]]) print(input_arr)

**Output:**

[[10 20 30] [40 50 60]]

As seen above, the output represents a 2-D matrix with the given set of inputs in the form of list.

### 2. Creation of matrix using ‘numpy.arange()’ function

The `numpy.arange()`

function along with the list inputs can be used to create a matrix in Python.

**Example:**

import numpy print(numpy.array([numpy.arange(10,15), numpy.arange(15,20)]))

**Output:**

[[10 11 12 13 14] [15 16 17 18 19]]

### 3. Creation of Matrix using ‘numpy.matrix() function’

The `numpy.matrix()`

function enables us to create a matrix in Python.

**Syntax:**

numpy.matrix(input,dtype)

**input: The elements input to form a matrix.****dtype: The data type of the corresponding output.**

**Example:**

import numpy as p matA = p.matrix([[10, 20], [30, 40]]) print('MatrixA:\n', matA) matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int print('\nMatrixB:\n', matB)

**Output:**

MatrixA: [[10 20] [30 40]] MatrixB: [[10 20] [30 40]]

## Addition of Matrix in Python

The addition operation on Matrices can be performed in the following ways:

**Traditional method****By using ‘+’ operator**

### 1. Traditional method

In this traditional method, we basically take the input from the user and then perform the addition operation using the **for loops** (to traverse through the elements of the matrix) and **‘+’ operator**.

**Example:**

import numpy as p ar1 = p.matrix([[11, 22], [33, 44]]) ar2 = p.matrix([[55, 66], [77, 88]]) res = p.matrix(p.zeros((2,2))) print('Matrix ar1 :\n', ar1) print('\nMatrix ar2 :\n', ar2) # traditional code for x in range(ar1.shape[1]): for y in range(ar2.shape[0]): res[x, y] = ar1[x, y] + ar2[x, y] print('\nResult :\n', res)

**Note**:`Matrix.shape`

returns the dimensions of a particular matrix.

**Output:**

Matrix ar1 : [[11 22] [33 44]] Matrix ar2 : [[55 66] [77 88]] Result : [[ 66. 88.] [ 110. 132.]]

### 2. Using ‘+’ operator

This method provides better efficiency to the code as it reduces the LOC (lines of code) and thus, optimizes the code.

**Example:**

import numpy as p ar1 = p.matrix([[11, 22], [33, 44]]) ar2 = p.matrix([[55, 66], [77, 88]]) res = p.matrix(p.zeros((2,2))) print('Matrix ar1 :\n', ar1) print('\nMatrix ar2 :\n', ar2) res = ar1 + ar2 # using '+' operator print('\nResult :\n', res)

**Output:**

Matrix ar1 : [[11 22] [33 44]] Matrix ar2 : [[55 66] [77 88]] Result : [[ 66 88] [110 132]]

## Matrix Multiplication in Python

Matrix Multiplication in Python can be provided using the following ways:

**Scalar Product****Matrix Product**

### Scalar Product

In the scalar product, **a scalar/constant value** is multiplied by each element of the matrix.

The** ‘*’ operator **is used to multiply the scalar value with the input matrix elements.

**Example:**

import numpy as p matA = p.matrix([[11, 22], [33, 44]]) print("Matrix A:\n", matA) print("Scalar Product of Matrix A:\n", matA * 10)

**Output:**

Matrix A: [[11 22] [33 44]] Scalar Product of Matrix A: [[110 220] [330 440]]

### Matrix Product

As mentioned above, we can use **the ‘*’ operator only for Scalar multiplication**. In order to go ahead with Matrix multiplication, we need to make use of the `numpy.dot()`

function.

The `numpy.dot()`

function takes **NumPy arrays as parameter** values and performs multiplication according to the basic rules of Matrix Multiplication.

**Example:**

import numpy as p matA = p.matrix([[11, 22], [33, 44]]) matB = p.matrix([[2,2], [2,2]]) print("Matrix A:\n", matA) print("Matrix B:\n", matB) print("Dot Product of Matrix A and Matrix B:\n", p.dot(matA, matB))

**Output:**

Matrix A: [[11 22] [33 44]] Matrix B: [[2 2] [2 2]] Dot Product of Matrix A and Matrix B: [[ 66 66] [154 154]]

## Subtraction of Python Matrix

The **‘-‘ operator** is used to perform Subtraction on Python Matrix.

**Example:**

import numpy as p matA = p.matrix([[11, 22], [33, 44]]) matB = p.matrix([[2,2], [2,2]]) print("Matrix A:\n", matA) print("Matrix B:\n", matB) print("Subtraction of Matrix A and Matrix B:\n",(matA - matB))

**Output:**

Matrix A: [[11 22] [33 44]] Matrix B: [[2 2] [2 2]] Subtraction of Matrix A and Matrix B: [[ 9 20] [31 42]]

## Division of Python Matrix

**Scalar Division** can be performed on the elements of the Matrix in Python using the **‘/’ operator**.

The ‘/’ operator divides each element of the Matrix with a scalar/constant value.

**Example**:

import numpy as p matB = p.matrix([[2,2], [2,2]]) print("Matrix B:\n", matB) print("Matrix B after Scalar Division operation:\n",(matB/2))

**Output:**

Matrix B: [[2 2] [2 2]] Matrix B after Scalar Division operation: [[ 1. 1.] [ 1. 1.]]

## Transpose of a Python Matrix

Transpose of a matrix basically involves the **flipping of matrix over the corresponding diagonals** i.e. it exchanges the rows and the columns of the input matrix. The rows become the columns and vice-versa.

For example: Let’s consider a matrix A with dimensions 3×2 i.e 3 rows and 2 columns. After performing transpose operation, the dimensions of the matrix A would be 2×3 i.e 2 rows and 3 columns.

`Matrix.T`

basically performs the transpose of the input matrix and produces a **new matrix** as a result of the transpose operation.

**Example:**

import numpy matA = numpy.array([numpy.arange(10,15), numpy.arange(15,20)]) print("Original Matrix A:\n") print(matA) print('\nDimensions of the original MatrixA: ',matA.shape) print("\nTranspose of Matrix A:\n ") res = matA.T print(res) print('\nDimensions of the Matrix A after performing the Transpose Operation: ',res.shape)

**Output:**

Original Matrix A: [[10 11 12 13 14] [15 16 17 18 19]] Dimensions of the original MatrixA: (2, 5) Transpose of Matrix A: [[10 15] [11 16] [12 17] [13 18] [14 19]] Dimensions of the Matrix A after performing the Transpose Operation: (5, 2)

In the above snippet of code, I have created a matrix of dimensions 2×5 i.e. 2 rows and 5 columns.

After performing the transpose operation, the dimensions of the resultant matrix are 5×2 i.e. 5 rows and 2 columns.

## Exponent of a Python Matrix

The exponent on a Matrix is calculated **element-wise** i.e. exponent of every element is calculated by raising the element to the power of an input scalar/constant value.

**Example:**

import numpy matA = numpy.array([numpy.arange(0,2), numpy.arange(2,4)]) print("Original Matrix A:\n") print(matA) print("Exponent of the input matrix:\n") print(matA ** 2) # finding the exponent of every element of the matrix

**Output:**

Original Matrix A: [[0 1] [2 3]] Exponent of the input matrix: [[0 1] [4 9]]

In the above code snippet, we have found out the exponent of every element of the input matrix by raising it to the power of 2.

## Matrix Multiplication Operation using NumPy Methods

The following techniques can be used to perform NumPy Matrix multiplication:

**Using the multiply() method****Using the matmul() method****Using the dot() method**– Already covered in this article

### Method 1: Using the multiply() method

The `numpy.multiply()`

method performs element-wise multiplication on an input matrix.

**Example:**

import numpy as p matA = p.matrix([[10, 20], [30, 40]]) print('MatrixA:\n', matA) matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int print('\nMatrixB:\n', matB) print("Matrix multplication using numpy.matrix() method") res = p.multiply(matA,matB) print(res)

**Output:**

MatrixA: [[10 20] [30 40]] MatrixB: [[10 20] [30 40]] Matrix multplication using numpy.matrix() method [[ 100 400] [ 900 1600]]

### Method 2: Using the matmul() method

The `numpy.matmul()`

method performs the matrix product on the input matrices.

**Example:**

import numpy as p matA = p.matrix([[10, 20], [30, 40]]) print('MatrixA:\n', matA) matB = p.matrix('[10,20;30,40]', dtype=p.int32) # Setting the data-type to int print('\nMatrixB:\n', matB) print("Matrix multplication using numpy.matmul() method") res = p.matmul(matA,matB) print(res)

**Output:**

MatrixA: [[10 20] [30 40]] MatrixB: [[10 20] [30 40]] Matrix multplication using numpy.matmul() method [[ 700 1000] [1500 2200]]

I would strongly recommend all the readers to go through the below tutorial to have a thorough understanding of NumPy Matrix Multiplication: NumPy Matrix Multiplication

## NumPy Matrix Transpose

The `numpy.transpose()`

function performs the transpose on the input matrix and results in a new matrix.

**Example:**

import numpy matA = numpy.array([numpy.arange(10,15), numpy.arange(15,20)]) print("Original Matrix A:\n") print(matA) print('\nDimensions of the original MatrixA: ',matA.shape) print("\nTranspose of Matrix A:\n ") res = matA.transpose() print(res) print('\nDimensions of the Matrix A after performing the Transpose Operation: ',res.shape)

**Output:**

Original Matrix A: [[10 11 12 13 14] [15 16 17 18 19]] Dimensions of the original MatrixA: (2, 5) Transpose of Matrix A: [[10 15] [11 16] [12 17] [13 18] [14 19]] Dimensions of the Matrix A after performing the Transpose Operation: (5, 2)

Recommended read: NumPy Matrix transpose() function

## Conclusion

Thus, in this article, we have understood the operations performed on Python Matrix and also had a look at the NumPy Matrix operations.