我想从numpy数组中删除nan
。让我们说我的numpy数组包含:
np_array = ["123","pqr","123",nan,"avb", nan]
预期产出:
["123","pqr","123","avb"]
如果我们使用pandas.dropna()
在pandas中执行它,它会删除我不想做的整行。我只想删除该值并减小数组大小。
有没有办法可以这样做?
答案 0 :(得分:1)
您不能使用np.isnan
,因为NaN
是数组中的字符串,但您可以通过与字符串"nan"
进行比较来使用布尔索引:
>>> import numpy as np
>>> np_array = np.array(["123","pqr","123",np.nan,"avb", np.nan])
>>> np_array[np_array != 'nan']
array(['1234', 'pqr', '123', 'avb'],
dtype='<U4')
答案 1 :(得分:0)
isnan()
应该做到这一点。关于如何做的最简单的例子:
>>> import numpy as np
>>> np_array = np.array([1,2,3,np.nan,4])
>>> np_array
array([ 1., 2., 3., nan, 4.])
>>> np_array = np_array[~np.isnan(np_array)]
>>> np_array
array([ 1., 2., 3., 4.])
答案 2 :(得分:0)
试试这个
np_clean = [x for x in np_array if str(x) != 'nan']
它将从您的列表中删除nan
答案 3 :(得分:0)
这适用于数值数组。
filter(lambda x: np.isfinite(x), np.array([1,2,3,np.nan]))
>>>[1.0, 2.0, 3.0]