Rolf Bartstra
Rolf Bartstra

Reputation: 1823

How to find slice object in numpy array

I have a numpy array containing integers and slice objects, e.g.:

x = np.array([0,slice(None)])

How do I retrieve the (logical) indices of the integers or slice objects? I tried np.isfinite(x) (producing an error), np.isreal(x) (all True), np.isscalar(x) (not element-wise), all in vain. What seems to work though is

ind = x<np.Inf       # Out[1]: array([True, False], dtype=bool)

but I'm reluctant to use a numerical comparison on an object who's numerical value is completely arbitrary (and might change in the future?). Is there a better solution to achieve this?

Upvotes: 1

Views: 1096

Answers (1)

Saullo G. P. Castro
Saullo G. P. Castro

Reputation: 58955

You can do this:

import numpy as np
checker = np.vectorize( lambda x: isinstance(x,slice) )
x = np.array([0,slice(None),slice(None),0,0,slice(None)])
checker(x)
#array([False,  True,  True, False, False,  True], dtype=bool)

Upvotes: 1

Related Questions