python: how to identify if a variable is an array or a scalar
I have a function that takes the argument
NBins. I want to make a call to this function with a scalar
50 or an array
[0, 10, 20, 30]. How can I identify within the function, what the length of
NBins is? or said differently, if it is a scalar or a vector?
I tried this:
>>> N=[2,3,5] >>> P = 5 >>> len(N) 3 >>> len(P) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: object of type 'int' has no len() >>>
As you see, I can't apply
P, since it's not an array.... Is there something like
isscalar in python?
>>> isinstance([0, 10, 20, 30], list) True >>> isinstance(50, list) False
To support any type of sequence, check
collections.Sequence instead of
isinstance also supports a tuple of classes, check
type(x) in (..., ...) should be avoided and is unnecessary.
You may also wanna check
not isinstance(x, (str, unicode))