Ich möchte überprüfen, ob die Variable None oder numpy.array ist. Ich habe eine check_a
Funktion implementiert , um dies zu tun.
def check_a(a):
if not a:
print "please initialize a"
a = None
check_a(a)
a = np.array([1,2])
check_a(a)
Dieser Code löst jedoch ValueError aus. Was ist der direkte Weg?
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
, daher tritt der Fehler tatsächlich auf, wenn not
versucht wird, das Array als einen einzelnen Booleschen Wert zu behandeln und herausfindet, dass dies nicht möglich ist. Wenn dies ~a
der Fall gewesen wäre, hätte dies die Überladung von NumPy verwendet und wäre fehlgeschlagen, wenn if
versucht wurde, das negierte Array als einzelnen Booleschen Wert zu verwenden.
ValueError
ist eine der häufigstennumpy
Fragen.not a
Dies bedeutet, dass ein boolesches Array mit (in diesem Fall) 2 Werten erstellt wird. Dieses boolesche Array kann nicht alsif
Bedingung verwendet werden! Dieis None
Alternative ist gut zu wissen, aber Sie sollten diesen Fehler auch verstehen.