Removing nan values from an array Removing nan values from an array python python

Removing nan values from an array


If you're using numpy for your arrays, you can also use

x = x[numpy.logical_not(numpy.isnan(x))]

Equivalently

x = x[~numpy.isnan(x)]

[Thanks to chbrown for the added shorthand]

Explanation

The inner function, numpy.isnan returns a boolean/logical array which has the value True everywhere that x is not-a-number. As we want the opposite, we use the logical-not operator, ~ to get an array with Trues everywhere that x is a valid number.

Lastly we use this logical array to index into the original array x, to retrieve just the non-NaN values.


filter(lambda v: v==v, x)

works both for lists and numpy arraysince v!=v only for NaN


Try this:

import mathprint [value for value in x if not math.isnan(value)]

For more, read on List Comprehensions.