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?
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?
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.