Numpy.diag() method is **“used to extract and construct a diagonal array.”**

**Syntax**

```
numpy.diag(arr,k)
```

**Parameters**

It takes two parameters, out of which one parameter is optional.

**arr:**It is an input array**k**: It is optional and takes 0 by default. If the value of this parameter is greater than 0, it means the diagonal is above the main diagonal, and vice versa if it is not.

**Return Value**

It returns an array with a diagonal array.

**Example 1: How to Use numpy.diag() Method**

```
import numpy as np
a = np.matrix([[1, 2, 3], [4, 5, 6], [9, 8, 7]])
print("Main Diagonal: \n", np.diag(a), "\n")
print("Above main diagonal: \n", np.diag(a, 1),
"\n") # k=1 (for above main diagonal)
print("Below main diagonal: \n", np.diag(a, -1)) # k=-1 (for below main diagonal)
```

**Output**

```
Main Diagonal: [1 5 7]
Above main diagonal: [2 6]
Below main diagonal: [4 8]
```

**Example 2: How does the np.diag() Method work?**

```
import numpy as np
a = np.matrix([[1, 2, 3], [4, 5, 6], [9, 8, 7], [11, 13, 15]])
print("Main Diagonal: \n", np.diag(a), "\n")
# k=1 (for above main diagonal)
print("Above main diagonal: \n", np.diag(a, 1), "\n")
# k=-1 (for below main diagonal)
print("Below main diagonal: \n", np.diag(a, -1))
```

**Output**

```
Main Diagonal:
[1 5 7]
Above main diagonal:
[2 6]
Below main diagonal:
[ 4 8 15]
```

**Example 3: Use a 4×4 Matrix and Apply the diag() Function**

```
import numpy as np
# Define a 4x4 matrix
matrix = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]])
print("Original Matrix:")
print(matrix)
# Extract the diagonal elements
diagonal = np.diag(matrix)
print("\nDiagonal Elements:")
print(diagonal)
```

**Output**

```
Original Matrix:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
Diagonal Elements:
[ 1 6 11 16]
```

**Example 4: Use Construct Diagonal From Python NumPy Array**

By using **numpy.diag()** function, we can also create a matrix with diagonal values.

```
import numpy as np
arr = np.array([11, 19, 21, 46])
arr2 = np.diag(arr)
print(arr2)
```

**Output**

```
[[11 0 0 0]
[ 0 19 0 0]
[ 0 0 21 0]
[ 0 0 0 46]]
```

That’s it.

Ankit Lathiya is a Master of Computer Application by education and Android and Laravel Developer by profession and one of the authors of this blog. He is also expert in JavaScript and Python development.