rkjt50r983 - 2 months ago 8x

Python Question

I'd like to check if variable is None or numpy.array. I've implemented

`check_a`

`def check_a(a):`

if not a:

print "please initialize a"

a = None

check_a(a)

a = np.array([1,2])

check_a(a)

But, this code raises ValueError. What is the straight forward way?

`ValueError Traceback (most recent call last)`

<ipython-input-41-0201c81c185e> in <module>()

6 check_a(a)

7 a = np.array([1,2])

----> 8 check_a(a)

<ipython-input-41-0201c81c185e> in check_a(a)

1 def check_a(a):

----> 2 if not a:

3 print "please initialize a"

4

5 a = None

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Answer

Just do it!

```
if a is None:
...
else:
...
```

Or if you want to be more explicit:

```
if type(a) is np.array:
...
else:
...
```

Thanks to @farenorth, there is also another solution: `isinstance`

. This is the same as above, but will also return `True`

for subclasses of that type (if that is what you want).

```
if isinstance(a, np.array):
...
else:
...
```

Source (Stackoverflow)

Comments