這個問題源于在訓練機器學習的一個模型時,使用訓練數據時提示prepare的數據中存在np.nan
報錯信息如下:
ValueError: np.nan is an invalid document, expected byte or unicode string.
剛開始不知道為什么會有這個,后來發現是list中存在nan值
下面是找到nan值的方法:
簡單找到:
import numpy as npx = np.array([2,3,np.nan,5, np.nan,5,2,3])for item in x: if np.isnan(item): print('yes')
拿到index數組:
x = np.array([[1,2,3,4], [2,3,np.nan,5], [np.nan,5,2,3]])print(np.argwhere(np.isnan(x)))
output: array([[1, 2], [2, 0]])
然而實際上,有些時候,如果是用pandas讀出的數據,在list中print時提示為nan,但用isnan方法卻并不能正確判斷,會提示TypeError,此時需要用pandas.isnull()判斷該值是否為空
下面是numpy.isnan()的文檔
以上這篇Python Numpy:找到list中的np.nan值方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答