Hello Everybody,
I want to get the index of the min value of a numpy array that contains NaNs and I want them ignored
>>> a = array([ nan, 2.5, 3., nan, 4., 5.])
>>> a
array([ NaN, 2.5, 3. , NaN, 4. , 5. ])
if I run argmin, it returns the index of the first NaN
>>> a.argmin()
0
I substitute NaNs with Infs and then run argmin
>>> a[isnan(a)] = Inf
>>> a
array([ Inf, 2.5, 3. , Inf, 4. , 5. ])
>>> a.argmin()
1
My dilemma is the following: I'd rather not change NaNs to Infs and then back after I'm done with argmin (since NaNs have a meaning later on in the code). Is there a better way to do this?
There is also a question of what should the result be if all of the original values of a are NaN? In my implementation the answer is 0