Gostaria de verificar se a variável é None ou numpy.array. Eu implementei uma check_a
função para fazer isso.
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Mas, esse código gera ValueError. Qual é o caminho direto?
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()
not
, então o erro realmente ocorre quando not
tenta tratar o array como um único booleano e descobre que não pode. Se tivesse sido ~a
, isso teria usado a sobrecarga do NumPy e falhado ao if
tentar usar o array negado como um único booleano.
ValueError
é uma dasnumpy
perguntas mais comuns . Isso significa quenot a
produz um array booleano, com (neste caso) 2 valores. Este array booleano não pode ser usado comoif
condição! Ais None
alternativa é bom saber, mas você também deve compreender este erro.