Not a number#

Not a number is a special floating point value to signal that the result of a floating point calculation is invalid.

In text we usually use NaN to refer to the Not-a-Number value.

For example, dividing 0 by 0 is invalid, and returns a NaN value:

import numpy as np
np.array(0) / 0
/tmp/ipykernel_4700/ RuntimeWarning: invalid value encountered in divide
  np.array(0) / 0

As you see above, Numpy uses all lower-case: nan for the NaN value.

You can also find the NaN value in the Numpy module:


NaN values are not equal to anything#

The NaN value has some specific properties.

It is not equal to anything, even itself:

np.nan == 0
np.nan == np.nan

Detecting NaN values#

You have found above that you cannot look for NaN values by using == np.nan.

To allow for this, use np.isnan to tell you whether a number or an array element is NaN.

np.isnan([0, np.nan])
array([False,  True])