Me gustaría comprobar si la variable es None o numpy.array. Implementé una check_a
función para hacer esto.
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Pero este código genera ValueError. ¿Cuál es la forma más sencilla?
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
, por lo que el error realmente ocurre cuando not
intenta tratar la matriz como un solo booleano y descubre que no puede. Si lo hubiera sido ~a
, habría usado la sobrecarga de NumPy y habría fallado al if
intentar usar la matriz negada como un único booleano.
ValueError
es una de lasnumpy
preguntas más frecuentes . Significa quenot a
produce una matriz booleana, con (en este caso) 2 valores. ¡Esta matriz booleana no se puede utilizar comoif
condición! Lais None
alternativa es bueno saber, pero se debe entender también este error.