Replace all off diagonal elements in numpy array

Replace all off diagonal elements in numpy array

Problem Description:

I have below numpy array

import numpy as np
np.identity(13)

Now I like to replace all off-diagonal elements with some other number, say 0.45.

Is there any direct method available to perform this?

Solution – 1

What about the following?

import numpy as np
n = 13
val_offdiag = 0.45
val_diag = 1
a = np.full((n ,n), val_offdiag) - np.identity(n) * (val_offdiag - val_diag)

Solution – 2

You can use numpy.where

np.where(np.identity(13)==0, 0.45, 1)
Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject