gpt4 book ai didi

python - Numpy isnan() 在 float 组上失败(来自 pandas 数据框应用)

转载 作者:IT老高 更新时间:2023-10-28 21:38:38 25 4
gpt4 key购买 nike

我有一个 float 数组(一些普通数字,一些 nans),它们来自对 pandas 数据帧的应用。

由于某种原因,numpy.isnan 在这个数组上失败了,但是如下所示,每个元素都是一个 float ,numpy.isnan 在每个元素上都正确运行,变量的类型肯定是一个 numpy 数组。

发生了什么事?!

set([type(x) for x in tester])
Out[59]: {float}

tester
Out[60]:
array([-0.7000000000000001, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan], dtype=object)

set([type(x) for x in tester])
Out[61]: {float}

np.isnan(tester)
Traceback (most recent call last):

File "<ipython-input-62-e3638605b43c>", line 1, in <module>
np.isnan(tester)

TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

set([np.isnan(x) for x in tester])
Out[65]: {False, True}

type(tester)
Out[66]: numpy.ndarray

最佳答案

np.isnan 可以应用于native dtype的NumPy数组(例如np.float64):

In [99]: np.isnan(np.array([np.nan, 0], dtype=np.float64))
Out[99]: array([ True, False], dtype=bool)

但在应用于对象数组时会引发 TypeError:

In [96]: np.isnan(np.array([np.nan, 0], dtype=object))
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

既然你有 Pandas,你可以使用 pd.isnull相反——它可以接受 NumPy 对象数组或原生 dtypes:

In [97]: pd.isnull(np.array([np.nan, 0], dtype=float))
Out[97]: array([ True, False], dtype=bool)

In [98]: pd.isnull(np.array([np.nan, 0], dtype=object))
Out[98]: array([ True, False], dtype=bool)

请注意,None 在对象数组中也被视为空值。

关于python - Numpy isnan() 在 float 组上失败(来自 pandas 数据框应用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com