Alexander Soare
Alexander Soare

Reputation: 3257

How to use an isinstance qualifier on the elements of a numpy array

I can do

arr = np.random.randint(0, 1, size=(10,10))
arr == 1

and get a boolean array as an output.

What if my array is an object data type and I want to check that certain elements are an instance of some class? Is there a native way to do it?

Upvotes: 0

Views: 682

Answers (1)

Tom
Tom

Reputation: 8790

Looks like numpy.vectorize is an option that numpy provides for doing so:

>>> np_isinstance = np.vectorize(isinstance)
>>> np_isinstance(arr, str)

array([[False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False]])

But see this post about efficiency; it is basically doing a for loop, so there aren't the same efficiency benefits of built-in numpy methods. Other options are also discussed on the thread, if you are interested.

Upvotes: 2

Related Questions