ValueError when checking if variable is None or numpy.array

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

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

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:
        ...

From: stackoverflow.com/q/36783921