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

Table of contents

## 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]]`

## References

Links | Site |
---|---|

numpy.random.choice | numpy.org |

ravel() | numpy.org |