rkjt50r983 - 1 year ago 214

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()

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Just do it!:

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

Or if you want to be more explicit:

```
# be careful not to check for np.array but for np.ndarray!
if type(a) is np.ndarray:
...
else:
...
```

Also if you use `isinstance`

, it will also return `True`

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

```
# be careful not to check for np.array but for np.ndarray!
if isinstance(a, np.ndarray):
...
else:
...
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**