# Numpy – Create a Diagonal Matrix (With Examples)

The Numpy library in Python comes with a number of useful functions to work with and manipulate the data in arrays. In this tutorial, we will look at how to create a diagonal matrix using Numpy with the help of some examples.

## How to create a diagonal matrix with Numpy?

You can use the numpy built-in `numpy.diag()` function to create a diagonal matrix. Pass the 1d array of the diagonal elements.

The following is the syntax –

`numpy.diag(v, k)`

To create a diagonal matrix you can use the following parameters –

1. `v` – The 1d array containing the diagonal elements.
2. `k` – The diagonal on which the passed elements (elements of the 1d array, v) are to be placed. By default, k is 0 which refers to the main diagonal. Diagonals above the main diagonal are positive and the ones below it are negative (see the examples below).

It returns a 2d array with the passed elements placed on the kth diagonal.

Highlighted programs for you

Flatiron School

Flatiron School

Data Science Bootcamp
Product Design UX/UI Bootcamp

University of Maryland Global Campus

University of Maryland Global Campus

Cloud Computing Systems Master's
Digital Forensics & Cyber Investigation Master's

Creighton University

Creighton University

Health Informatics Master's

## Examples

Let’s now look at examples of using the above syntax to get create a diagonal matrix using the Numppy library.

### Example 1 – Diagonal matrix from 1d array placed on the default diagonal in Numpy

Let’s now use the `numpy.diag()` function to create a diagonal matrix from a 1d array. For example, we’ll only pass the 1d array and use the default diagonal.

```import numpy as np

# create a 1d array of diagonal elements
ar = np.array([1, 2, 3])
# create a diagonal matrix
res = np.diag(ar)
# display the returned matrix
print(res)```

Output:

```[[1 0 0]
[0 2 0]
[0 0 3]]```

We get a 2d numpy array which is a diagonal matrix. All the elements in the matrix are zero except the diagonal elements. You can see that the passed elements are placed on the main diagonal (`k=0`).

### Example 2 – Diagonal matrix from 1d array placed on a custom diagonal in Numpy

In the above example, we placed the elements from the 1d array of the main diagonal.

The `numpy.diag()` function comes with an optional parameter, `k` that you can use to specify the diagonal you want to use to create the diagonal matrix.

The below image better illustrates the different values of `k` (representing different diagonals) for a 3×3 matrix.

`k` is `0` by default. The diagonals below the main diagonal have `k < 0` and the diagonals above it have `k > 0`.

Let’s now use the `numpy.diag()` function to create a diagonal matrix by placing the passed elements on the `k=-1` diagonal.

```# create a 1d array of diagonal elements
ar = np.array([1, 2, 3])
# create a diagonal matrix with elements on digonal, k=-1
res = np.diag(ar, k=-1)
# display the returned matrix
print(res)```

Output:

```[[0 0 0 0]
[1 0 0 0]
[0 2 0 0]
[0 0 3 0]]```

The resulting diagonal matrix has the passed elements on the `k = -1` diagonal. Here, the resulting matrix is 4×4 because all the elements in the passed array cannot be accommodated on the `k=-1` diagonal of a 3×3 matrix, hence the added dimensions.

## Alternative usage of the `numpy.diag()` function

In the above examples, we used the `numpy.diag()` function to create a diagonal matrix by passing a 1d array and placing its elements on the kth diagonal.

You can also use the `numpy.diag()` function to extract the diagonal elements from a 2d array.

For example, if you pass a 2d array to the `numpy.diag()` function, it will return its diagonal elements on the kth diagonal (which is 0 by default).

```# create a 2D numpy array
arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# get the diagonal elements
res = np.diag(arr)
# display the diagonal elements
print(res)```

Output:

`[1 5 9]`

We get the elements on the main diagonal as a 1d array.

## Summary

In this tutorial, we looked at how to create a diagonal matrix using a 1d array in Numpy. The following are the key takeaways from this tutorial.

• Use the `numpy.diag()` function to create a diagonal matrix. Pass the diagonal elements as a 1d array.
• You can specify the diagonal to place the elements in the passed array on using the optional parameter `k`. By default, it represents the main diagonal, `k = 0`.

You might also be interested in –

• 