NumPy is a powerful library in Python that provides support for large, multi-dimensional arrays and matrices. One of the useful functions offered by NumPy is the diag function. The diag function can be used to extract the diagonal elements from a given matrix or to construct a diagonal matrix from an array of elements.
Extracting Diagonal Elements
To extract the diagonal elements from a matrix using the diag function, we simply pass the matrix as an argument. The diag function returns a 1-D array containing the diagonal elements.
import numpy as np
matrix = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
diagonal = np.diag(matrix)
print(diagonal)
Output:
[1 5 9]
In the above example, we create a 3x3 matrix and use the diag function to extract the diagonal elements [1, 5, 9], which are then printed to the console.
Constructing Diagonal Matrix
The diag function can also be used to construct a diagonal matrix from an array of elements. To do this, we pass the array as an argument and specify the k parameter to specify the position of the diagonal.
import numpy as np
elements = np.array([1, 2, 3])
diagonal_matrix = np.diag(elements)
print(diagonal_matrix)
Output:
[[1 0 0]
[0 2 0]
[0 0 3]]
In the above example, we create a 1-D array [1, 2, 3] and construct a 3x3 diagonal matrix using the diag function. The resulting matrix is then printed, showing the diagonal elements.
The k parameter can be used to specify the position of the diagonal in the resulting matrix. A positive value of k shifts the diagonal above the main diagonal, while a negative value shifts it below. Let’s see an example:
import numpy as np
elements = np.array([1, 2, 3])
diagonal_matrix = np.diag(elements, k=1)
print(diagonal_matrix)
Output:
[[0 1 0 0]
[0 0 2 0]
[0 0 0 3]
[0 0 0 0]]
In this example, we set k=1, so the diagonal elements are shifted one position above the main diagonal.
In summary, the diag function in NumPy is a versatile tool for working with diagonal elements of arrays and constructing diagonal matrices. It offers flexibility and convenience, making it a valuable function in numerical computing tasks involving matrices and arrays.