[Numpy-discussion] type checking, what's recommended?

josef.pktd at gmail.com josef.pktd at gmail.com
Wed Dec 7 20:58:14 EST 2011


If I want to know whether something that might be an array is really a
plain ndarray and not a subclass, is using `type` the safest bet?

All the other forms don't discriminate against subclasses.

>>> type(np.ma.zeros(3)) is np.ndarray
False
>>> type(np.zeros(3)) is np.ndarray
True

>>> isinstance(np.ma.zeros(3), np.ndarray)
True
>>> isinstance(np.zeros(3), np.ndarray)
True

>>> issubclass(np.ma.zeros(3).__class__, np.ndarray)
True
>>> issubclass(np.zeros(3).__class__, np.ndarray)
True

>>> isinstance(np.matrix(np.zeros(3)), np.ndarray)
True
>>> type(np.matrix(np.zeros(3))) is np.ndarray
False

Thanks,

Josef



More information about the NumPy-Discussion mailing list