问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python中怎么把数据中inf转化为na

发布网友 发布时间:2022-04-23 03:13

我来回答

2个回答

懂视网 时间:2022-05-11 00:52

这篇文章主要介绍了关于Python中Inf与Nan的判断问题,文中介绍的很详细,对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。

大家都知道 在Python 中可以用如下方式表示正负无穷:

float("inf") # 正无穷
float("-inf") # 负无穷

利用 inf(infinite) 乘以 0 会得到 not-a-number(NaN) 。如果一个数超出 infinite,那就是一个 NaN(not a number)数。在 NaN 数中,它的 exponent 部分为可表达的最大值,即 FF(单精度)、7FF(双精度)和 7FFF(扩展双精度)。 NaN 数与 infinite 数的区别是:infinite 数的 significand 部分为 0 值(扩展双精度的 bit63 位为 1);而 NaN 数的 significand 部分不为 0 值。

我们先看看如下的代码:

>>> inf = float("inf")
>>> ninf = float("-inf")
>>> nan = float("nan")
>>> inf is inf
True
>>> ninf is ninf
True
>>> nan is nan
True
>>> inf == inf
True
>>> ninf == ninf
True
>>> nan == nan
False
>>> inf is float("inf")
False
>>> ninf is float("-inf")
False
>>> nan is float("nan")
False
>>> inf == float("inf")
True
>>> ninf == float("-inf")
True
>>> nan == float("nan")
False

如果你没有尝试过在 Python 中判断一个浮点数是否为 NaN,对以上的输出结果肯定会感到诧异。首先,对于正负无穷和 NaN 自身与自身用 is 操作,结果都是 True,这里好像没有什么问题;但是如果用 == 操作,结果却不一样了, NaN 这时变成了 False。如果分别用 float 重新定义一个变量来与它们再用 is 和 == 比较,结果仍然出人意料。出现这种情况的原因稍稍有些复杂,这里就不赘术了,感兴趣可以查阅相关资料。

如果你希望正确的判断 Inf 和 Nan 值,那么你应该使用 math 模块的 math.isinf math.isnan 函数:

>>> import math
>>> math.isinf(inf)
True
>>> math.isinf(ninf)
True
>>> math.isnan(nan)
True
>>> math.isinf(float("inf"))
True
>>> math.isinf(float("-inf"))
True
>>> math.isnan(float("nan"))
True

这样便准确无误了。既然我在谈论这个问题,就是再忠告:不要在 Python 中试图用 is 和 == 来判断一个对象是否是正负无穷或者 NaN。你就乖乖的用 math 模块吧,否则就是引火烧身。

当然也有别的方法来作判断,以下用 NaN 来举例,但仍然推荐用 math 模块,免得把自己弄糊涂。

用对象自身判断自己

>>> def isnan(num):
... return num != num
... 
>>> isnan(float("nan"))
True

用 numpy 模块的函数

>>> import numpy as np
>>> 
>>> np.isnan(np.nan)
True
>>> np.isnan(float("nan"))
True
>>> np.isnan(float("inf"))
False

Numpy 的 isnan 函数还可以对整个 list 进行判断:

>>> lst = [1, float("nan"), 2, 3, np.nan, float("-inf"), 4, np.nan]
>>> lst
[1, nan, 2, 3, nan, -inf, 4, nan]
>>> np.isnan(lst)
array([False, True, False, False, True, False, False, True], dtype=bool)

这里的 np.isnan 返回布尔值数组,如果对应位置为 NaN,返回 True,否则返回 False。

更多关于Python中Inf与Nan的判断问题详解相关文章请关注PHP中文网!

热心网友 时间:2022-05-10 22:00

在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误。这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值。

numpy.nan_to_num(x): 
使用0代替数组x中的nan元素,使用有限的数字代替inf元素

使用范例:

>>>import numpy as np>>> a = np.array([[np.nan,np.inf],\...               [-np.nan,-np.inf]])>>> a
array([[  nan,   inf],
[  nan,  -inf]])>>> np.nan_to_num(a)
array([[ 0.00000000e+000,  1.79769313e+308],
[ 0.00000000e+000, -1.79769313e+308]])123456789

和此类问题相关的还有一组判断用函数,包括:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 qq游戏达人充值多少钱积一分? python 统计array中nan的个数要怎么做 请问QQ游戏人生首页里我的资料里的基础信息怎么改 QQ游戏人生主页 python 在pandas中的 nan 怎么样在计算时当 0 与邻列相加 QQ游戏斗地主的视频认证专区怎么样重新认证? QQ游戏人生为什么一进自己的主页老刷新? Python 为什么不定义 NaN 请QQ游戏达人指点 进入QQ游戏大厅后 总提示我的版本太低 但是新版本又不能下载 请问应该怎么办 急急急 python怎么判断numpy.ndarray 是否空 qq游戏达人称号怎么弄的? QQ游戏达人活动 python数据处理怎么筛选掉nan空值 QQ游戏人生的主页怎么打不开啊? 在使用python中的concat 函数时,有一个数据显示nan 是怎么回事? QQ达人和QQ网吧达人有什么用啊? Python中怎么判断一个浮点数是NaN QQ游戏人生界面中,已知其中一个朋友的QQ号怎么查找到他的游戏人生主页 数据库中的空值与NULL的区别以及python中的NaN和None 如何成为QQ游戏达人大神们帮帮忙 qq游戏人生怎么点?给个最佳? python 在pandas中的 NaN 怎么样在计算时当 0 与邻列相加 ?? python nan怎么转化为nat 为什么我的qq游戏大厅的钓鱼达人不能登陆一直黑屏!中午还没事 Python读取表格时候,如果表格上有空格,自动把0赋值给变量,输出0,而不是输出'nan',如何实现? QQ游戏捕鱼达人 的游戏有没有 python如何创建一个全是np.nan的numpy数组? 猎鱼达人3d兑换码在哪个地方 - 信息提示 如何处理csv中的空值 华为手机如何设置语音模式? 华为手机在哪设置流量限制? 华为手机流量设置在哪 有Java基础学PHP需要多久? 华为手机控制流量如何设置方法 学过java之后再学php是不是很容易? 学会java再学PHP好学吗 华为手机如何设置流量使用情况 有一定的java基础学php快吗 现在在学Java,又同时想学php?