Is there a better way of making numpy.argmin() ignore NaN values
Posted
by Dragan Chupacabrovic
on Stack Overflow
See other posts from Stack Overflow
or by Dragan Chupacabrovic
Published on 2010-05-12T17:07:15Z
Indexed on
2010/05/12
17:14 UTC
Read the original article
Hit count: 317
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
© Stack Overflow or respective owner