In a recent interview I was given the following problem.
We have a list l = [NaN, 5, -12, NaN, 9, 0]
and we want to replaceNaN
with -9
using the max
function knowing that max(NaN, -9) = -9
. What I have tried is :
from numpy import NaN l = [NaN, 5, -12, NaN, 9, 0] ll = [-9, 5, -12, -9, 9, 0] print([max(i) for i in zip(l, ll)]) # output : [nan, 5, -12, nan, 9, 0]
but the output is still the same list. Can’t figure out how to code this.
Advertisement
Answer
You can use nan_to_num
function to change the NaN value to any number
from numpy import NaN,nan_to_num l = [NaN, 5, -12, NaN, 9, 0] ll = [-9, 5, -12, -9, 9, 0] print([max(nan_to_num(i,nan=-9)) for i in zip(l, ll)]) # is same as # print([nan_to_num(i,nan=-9) for i in l]) # change nan=-9 to any number of your choice.
OUTPUT [-9.0, 5, -12, -9.0, 9, 0]
Here you got -9.0
instead of -9
(I think because NaN Type is float).