165 votes

ValueError lors de la vérification si la variable n'est ou numpy.tableau

J'aimerais vérifier si la variable n'est ou numpy.tableau. J'ai implémenté check_a fonction pour ce faire.

def check_a(a):
    if not a:
        print "please initialize a"

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

Mais, ce code génère ValueError. Qu'est-ce que le simple?

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

277voto

Jerfov2 Points 1878

Just do it!:

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

Ou si vous voulez être plus explicite:

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

Aussi, si vous utilisez isinstance, il sera également de retour True pour les sous-classes de ce type (si c'est ce que vous voulez):

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X