Reputation: 3257
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
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