2017-03-09 65 views
-2

我有檢查,如果列表爲空蟒蛇:檢查空列表拋出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]) 

我得到這樣的打印代碼,這樣看來,陣列和一切正常。爲空虛的檢查失敗

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

而且我得到以下錯誤:

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

我猜'vals_reg'是一個numpy數組,使用'if vals_reg [:end_reg] .size == 0'來檢查它是否爲空。 –

回答

0

的錯誤似乎不言自明。 Numpy拒絕判斷數組vals_reg[:end_reg]或實際上任何數組是否應該被解釋爲TrueFalse,因爲Numpy的創建者認爲它是模棱兩可的(這是真的;對於所有的數組可能更自然的是False由於非空而被歸類爲False,而不是True)。

當且僅當列表爲空時,Python決定將列表分類爲False,因爲Python的創建者認爲足夠明顯且有用,但這不是Python列表,它是Numpy數組。

實際上,您以非歧義的方式詢問數組是否爲空。你可以做到這一點與數組方法/屬性:

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

vals_reg[:end_reg].size == 0

是你想要的測試。