Vorrei controllare se la variabile è None o numpy.array. Ho implementato la check_a
funzione per farlo.
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Ma questo codice genera ValueError. Qual è il modo semplice?
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
, quindi l'errore si verifica effettivamente quando not
cerca di trattare l'array come un singolo booleano e scopre che non può. Se lo fosse stato ~a
, ciò avrebbe utilizzato il sovraccarico di NumPy e non sarebbe riuscito quando si if
cerca di utilizzare l'array negato come un singolo booleano.
ValueError
è una dellenumpy
domande più comuni . Significa chenot a
produce un array booleano, con (in questo caso) 2 valori. Questo array booleano non può essere utilizzato comeif
condizione! L'is None
alternativa è buona a sapersi, ma dovresti anche capire questo errore.