如何从NumPy数组中删除NaN值?
[1, 2, NaN, 4, NaN, 8] ⟶ [1, 2, 4, 8]
如何从NumPy数组中删除NaN值?
[1, 2, NaN, 4, NaN, 8] ⟶ [1, 2, 4, 8]
当前回答
对我来说,@jmetz的答案不工作,但是使用pandas isnull()做到了。
x = x[~pd.isnull(x)]
其他回答
试试这个:
import math
print [value for value in x if not math.isnan(value)]
要了解更多,请阅读列表推导式。
对我来说,@jmetz的答案不工作,但是使用pandas isnull()做到了。
x = x[~pd.isnull(x)]
做到以上几点:
x = x[~numpy.isnan(x)]
or
x = x[numpy.logical_not(numpy.isnan(x))]
我发现重置到相同的变量(x)并没有删除实际的nan值,必须使用不同的变量。将其设置为不同的变量删除了nan。 如。
y = x[~numpy.isnan(x)]
@jmetz的答案可能是大多数人需要的;然而,它会产生一个一维数组,例如,使其无法用于删除矩阵中的整行或整列。
为此,应该将逻辑数组缩减为一维,然后对目标数组进行索引。例如,下面将删除至少有一个NaN值的行:
x = x[~numpy.isnan(x).any(axis=1)]
点击这里查看更多细节。
最简单的方法是:
numpy.nan_to_num(x)
文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.nan_to_num.html