type checking, what's recommended?

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

We have indeed been using "type(a) is np.ndarray" in Theano to check that. If there's a better way, I'm interested to know as well :) -=- Olivier 2011/12/7 <josef.pktd@gmail.com>
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 _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
participants (2)
-
josef.pktd@gmail.com
-
Olivier Delalleau