Numpy diagonal() Function



The Numpy diagonal() function is used to extract a specified diagonal from a 2D array or matrix. It can also be used to set or modify a diagonal of the array. This function is useful when working with square matrices or when accessing or updating diagonal elements of an array. This function results a ValueError when the 1D array is passes as an argument.

In Numpy, the diagonal() function extracts a diagonal from 2D or higher-dimensional arrays with options for offsets and axes, while diag() creates a diagonal matrix from a 1D array or extracts a diagonal from a 2D array, supporting both extraction and construction of diagonals.

Syntax

Following is the syntax of the Numpy diagonal() function −

numpy.diagonal(a, offset=0, axis1=0, axis2=1)  

Parameters

Following are the parameters of the Numpy diagonal() function −

  • a: The input array (2D array or matrix).
  • offset (optional): The diagonal offset. A positive value shifts the diagonal above the main diagonal, and a negative value shifts it below. The default is 0, which represents the main diagonal.
  • axis1, axis2 (optional): The axes that define the 2D plane in the array from which the diagonal will be extracted. By default, axis1=0 and axis2=1.

Return Type

This function returns a 1D array containing the diagonal elements of the matrix.

Example

Following is a basic example to exact the main diagonal elements of matrix using the Numpy diagonal() function −

import numpy as np  
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  
result = np.diagonal(matrix)  
print("Main Diagonal:", result)  

Output

Following is the output of the above code −

Main Diagonal: [1 5 9]  

Example: Extracting Diagonal with an Offset

The offset parameter in the diagonal() function allows us to extract diagonals above or below the main diagonal. A positive value shifts the diagonal upwards (above the main diagonal), while a negative value shifts it downwards (below the main diagonal). Here, we have extracted the elements immediately above the main diagonal −

import numpy as np  
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  
result = np.diagonal(matrix, offset=1)  
print("Diagonal above the main diagonal:", result)  

Output

Following is the output of the above code −

Diagonal above the main diagonal: [2 6]  

Example: Diagonal elements with Different Axes

We can specify different axes to extract the diagonal from non-square matrices. In the following example, we have used axes 0 and 1 to extract a diagonal elements−

import numpy as np  
matrix = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
print("Original Matrix:\n",matrix) 
print("Shape of the Matrix:",matrix.shape)
result = np.diagonal(matrix,axis1=0, axis2=1)  
print("Diagonal with axes (0, 1):\n", result) 

Output

Following is the output of the above code −

Original Matrix:
 [[1 2]
 [3 4]
 [5 6]
 [7 8]]
Shape of the Matrix: (4, 2)
Diagonal with axes (0, 1):
 [1 4]
numpy_array_manipulation.htm
Advertisements