Numpy creating logical array in the presence of NaNs -


i have array x, extract logical mask. x contains nan values, , mask operation raises warning, trying avoid.

here code:

import numpy np x = np.array([[0, 1], [2.0, np.nan]]) mask = np.isfinite(x) & (x > 0) 

the resulting mask correct (array([[false, true], [ true, false]], dtype=bool)), warning raised:

__main__:1: runtimewarning: invalid value encountered in greater 

how can construct mask in way avoids comparing against nans? not trying suppress warning (which know how do).

we in 2 steps - create mask of finite ones , use same mask index , select valid mask of remaining finite elements off x testing , setting remaining elements in mask. so, have implementation -

in [35]: x out[35]:  array([[  0.,   1.],        [  2.,  nan]])  in [36]: mask = np.isfinite(x)  in [37]: mask[mask] = x[mask]>0  in [38]: mask out[38]:  array([[false,  true],        [ true, false]], dtype=bool) 

Comments