当前位置: 首页 > 面试题库 >

Numpy isnan()在浮点数组上失败(适用于pandas数据框)

潘凯
2023-03-14
问题内容

我有一个浮点数数组(一些正常数字,一些nans),它们是从对熊猫数据框的应用中得出的。

由于某种原因,numpy.isnan在此数组上失败,但是如下所示,每个元素都是浮点数,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 可以应用于本机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因此可以改用-它可以接受对象或本机dtypes的NumPy数组:

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在对象数组中也将其视为空值。



 类似资料:
  • 问题内容: 我正在寻找比较应该相同的两个数据框。但是,由于浮点精度,我被告知值不匹配。我在下面创建了一个示例进行模拟。如何获得正确的结果,以便最终比较数据帧对两个单元格都返回true? 问题答案: 好的,您可以为此使用: 需要相对公差和绝对公差。这些有默认值:,分别

  • 问题内容: 我有一个浮点数数组: 在数组上运行sort()后,我得到了: 请注意,JavaScript(节点)的5.8 …大于49.6…。这是为什么? 如何正确地对这些数字进行排序? 问题答案: 传递排序函数: 结果: 从MDN: 如果未提供compareFunction,则通过将元素转换为字符串并按字典顺序(“字典”或“电话簿”,而非数字)顺序比较字符串来对元素进行排序。

  • 我正在使用弹性搜索的Spring数据。我的存储库类有一个方法来获取索引中的最新插入。 这将失败,但有以下例外。 JAVAlang.NullPointerException:在组织中为空。springframework。数据弹性搜索。果心弹性搜索模板。queryformage(ElasticsearchTemplate.java:307)~[spring-data-elasticsearch-2.0

  • 3.2. 浮点数 Go语言提供了两种精度的浮点数,float32和float64。它们的算术规范由IEEE754浮点数国际标准定义,该浮点数规范被所有现代的CPU支持。 这些浮点数类型的取值范围可以从很微小到很巨大。浮点数的范围极限值可以在math包找到。常量math.MaxFloat32表示float32能表示的最大数值,大约是 3.4e38;对应的math.MaxFloat64常量大约是1.8

  • 我需要一个regex来匹配这两个整数值和浮点数(而浮点数有一个“.”作为分离器)。这些数字总是在一个括号中,可能有一个前导的“+”。 什么应该是有效的: null 什么应该是无效的: 1.0---因为没有括号 5---因为没有括号 (1,5)---becaue“,”而不是“.” (a)---因为不是一个数字 (1.5)--因为不仅仅是一个数字 (1+5)---因为...嗯...只是失败了 [5]-

  • 本文向大家介绍PHP浮点数据类型,包括了PHP浮点数据类型的使用技巧和注意事项,需要的朋友参考一下 定义和用法 在PHP中,float数据类型表示任何数字,并带有小数部分。小数部分可以包含小数点后的数字,或者可以使用e或E以科学计数法表示。例如,科学计数法中的100是10e2。 浮点数的大小取决于硬件/ OS平台,尽管通常会精确到小数点后14位。 语法 为了更好的可读性,整数文字可以使用“ _”