# How to randomly insert NaN in a matrix with numpy in python ?

Published: August 02, 2020

Updated: February 24, 2023

Tags: Python; Numpy;

Inserting NaN values into a matrix is a relatively straightforward task when using numpy in python. Examples:

## Create a matrix with numpy

First, we must create the array that will hold our matrix (or alternatively load the matrix from a file):

````import numpy as np`

`A = np.random.uniform(10,80, size=(4,6))`

`print(A)`
```

Ouput

````[[52.34830542 43.7300926  65.65912419 74.47707968 47.7363097  31.78605372]`
` [49.41123686 19.82268971 59.91408598 40.86920833 53.23834812 37.93559161]`
` [16.18419498 42.49772722 76.53306408 30.90572765 38.15287236 72.44956349]`
` [46.15969878 52.39722864 71.97596547 70.40800518 44.63824773 35.43923044]]`
```

## Randomly insert NaN

Then, we can use `np.random.choice()` to randomly select elements in the array and replace them with NaN values. For example:

````n = 6`

`index = np.random.choice(A.size, n, replace=False)`

`A.ravel()[index] = np.nan`

`print(A)`
```

Ouput

````[[52.34830542 43.7300926  65.65912419         nan 47.7363097          nan]`
` [        nan 19.82268971         nan 40.86920833 53.23834812 37.93559161]`
` [16.18419498 42.49772722         nan 30.90572765 38.15287236 72.44956349]`
` [46.15969878 52.39722864 71.97596547         nan 44.63824773 35.43923044]]`
```

## Another example

Note:

````print(type(np.nan))`
```

gives

```` <class 'float'>`
```

An example

````import numpy as np`

`A = np.random.randint(10,80, size=(5,2))`

`A = A * 1.0`

`print(A)`
```

returns

````[[52. 55.]`
`[14. 33.]`
`[19. 50.]`
`[67. 37.]`
`[16. 72.]]`
```

and

````n = 3`

`index = np.random.choice(A.size, n, replace=False)`

`A.ravel()[index] = np.nan`

`print(A)`
```

returns for example

````[[52. 55.]`
` [14. 33.]`
` [19. nan]`
` [67. nan]`
` [16. nan]]`
```