Ricardo Rod
Ricardo Rod

Reputation: 8911

replace the NaN value zero after an operation with arrays

how can I replace the NaN value in an array, zero if an operation is performed such that as a result instead of the NaN value is zero operations as

0 / 0 = NaN can be replaced by 0

Upvotes: 18

Views: 49425

Answers (4)

Sagar gupta
Sagar gupta

Reputation: 1

import numpy

alpha = numpy.array([1,2,3,numpy.nan,4])

n = numpy.nan_to_num(alpha)

print(n)

output : array([1., 2., 3., 0., 4.])

Upvotes: 0

There is also a pandas solution to this.


import pandas as pd

mylist = [2.3, pd.NA, 1.1, 0.7]
mylist = [0 if pd.isna(x) else x for x in mylist]

Upvotes: 3

SoonSYJ
SoonSYJ

Reputation: 211

import numpy
a=numpy.array([1,2,3,'NaN',4])
s=numpy.isnan(a)
a[s]=0.0

Upvotes: 6

David Webb
David Webb

Reputation: 193706

If you have Python 2.6 you have the math.isnan() function to find NaN values.

With this we can use a list comprehension to replace the NaN values in a list as follows:

import math
mylist = [0 if math.isnan(x) else x for x in mylist]

If you have Python 2.5 we can use the NaN != NaN trick from this question so you do this:

mylist = [0 if x != x else x for x in mylist]

Upvotes: 33

Related Questions