0
我有一個函數應該返回一個整數或np.nan的元組。如何在列表理解中檢查np.nan?
return tuple(int(round(n)) if n is not np.nan else n for n in r)
該代碼看起來不錯,但我得到以下錯誤,我無法弄清楚什麼是錯的。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-368ab2ecd3f3> in <module>()
6 warnings.filterwarnings("ignore") #ignore numpy warnings
7 for k,v in bb_mapping.items():
----> 8 print(k, map_overview(v))
<ipython-input-2-6f1dc6e291ee> in map_overview(map_tuples)
120
121 r = (np.mean(bb_len), np.std(bb_len), np.mean(ins_len), np.std(ins_len))
--> 122 return tuple(int(round(n)) if n is not np.nan else n for n in r)
123
124 def print_sbar(n,m,s='|#.|',size=30,message=''):
<ipython-input-2-6f1dc6e291ee> in <genexpr>(.0)
120
121 r = (np.mean(bb_len), np.std(bb_len), np.mean(ins_len), np.std(ins_len))
--> 122 return tuple(int(round(n)) if n is not np.nan else n for n in r)
123
124 def print_sbar(n,m,s='|#.|',size=30,message=''):
ValueError: cannot convert float NaN to integer
如何在轉換爲整數之前顯式檢查np.nan值,如何得到此錯誤?
夠奇怪的,如果我手動檢查返回代碼,列表解析按預期工作:
缺少什麼我在這裏?
我確定'np.nan'只會被實例化一次,而'is'是檢查它的正確方法。感謝您的提示,它解決了我的問題。 –