2017-03-09 2 views
-2

I-Code, der überprüft, ob die Liste leer istPython: Check für die leere Liste wirft Valueerror

end_reg = np.argmin(vals_reg) 
print(end_reg) 
print("vals_reg[:end_reg]") 
print(vals_reg[:end_reg]) 
if not vals_reg[:end_reg]: 
    start_reg = np.argmax(vals_reg) 
    end_reg = np.argmin(vals_reg[start_reg:]) + start_reg 
else: 
    start_reg = np.argmax(vals_reg[:end_reg]) 

ich solche Drucke erhalten, scheint so, dass die Arrays und alles in Ordnung ist. Die Prüfung für die Leere nicht

5 
vals_reg[:end_reg] 
[ 24844. 34973. 33538. 31136. 28258.] 

Und ich bekomme folgende Fehlermeldung:

if not vals_reg[:end_reg]: 
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 
+1

Ich nehme an, dass 'vals_reg' ein numpy Array ist, benutze' if vals_reg [: end_reg] .size == 0', um zu prüfen, ob es leer ist. –

Antwort

0

Der Fehler scheint ziemlich selbsterklärend. Numpy weigert sich, eine Entscheidung darüber zu treffen, ob das Array vals_reg[:end_reg] oder tatsächlich irgendein Array als True oder False interpretiert werden sollte, weil die Ersteller von Numpy der Meinung waren, dass es mehrdeutig sei (was wahr ist; es mag für ein Array aller False natürlicher sein) s als False zu klassifizieren, anstatt True aufgrund der Tatsache, nicht leer zu sein).

Python hat die Entscheidung getroffen, Listen nur dann als False zu klassifizieren, wenn die Liste leer ist, weil die Ersteller von Python ausreichend offensichtlich und nützlich waren, aber dies ist keine Python-Liste, sondern ein Numpy-Array.

Was Sie eigentlich fragen, in nicht zweideutigen Begriffen ist, ob das Array leer ist. Sie können tun, dass mit Array-Methoden/Attribute:

How can I check whether the numpy array is empty or not?

heißt

vals_reg[:end_reg].size == 0

der Test Sie wollen.

Verwandte Themen