Replace the zeros in a NumPy integer array with nan

Question:

I wrote a python script below:

import numpy as np

arr = np.arange(6).reshape(2, 3)
arr[arr==0]=['nan']
print arr

But I got this error:

Traceback (most recent call last):
  File "C:UsersDesktoptest.py", line 4, in <module>
    arr[arr==0]=['nan']
ValueError: invalid literal for long() with base 10: 'nan'
[Finished in 0.2s with exit code 1]

How to replace zeros in a NumPy array with nan?

Asked By: Heinz

||

Answers:

np.nan has type float: arrays containing it must also have this datatype (or the complex or object datatype) so you may need to cast arr before you try to assign this value.

The error arises because the string value 'nan' can’t be converted to an integer type to match arr‘s type.

>>> arr = arr.astype('float')
>>> arr[arr == 0] = 'nan' # or use np.nan
>>> arr
array([[ nan,   1.,   2.],
       [  3.,   4.,   5.]])
Answered By: Alex Riley
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.