栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在没有numpy的python中分配变量NaN

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在没有numpy的python中分配变量NaN

是的-使用

math.nan

>>> from math import nan>>> print(nan)nan>>> print(nan + 2)nan>>> nan == nanFalse>>> import math>>> math.isnan(nan)True

在Python 3.5之前,可以使用

float("nan")
(不区分大小写)。

请注意,检查两个NaN是否彼此相等将始终返回false。部分原因是不能(严格地说)说两个不是数字的事物彼此相等-请参阅所有比较为IEEE754
NaN值返回false的基本原理是什么?
了解更多详细信息。

相反,

math.isnan(...)
如果需要确定某个值是否为NaN
,请使用。

此外,

==
在尝试将NaN存储在诸如
list
dict
(或使用自定义容器类型)的容器类型中时,对NaN值进行操作的确切语义可能会引起细微问题。有关更多详细信息,请参见检查容器中是否存在NaN。


您还可以使用Python的十进制模块构造NaN数字:

>>> from decimal import Decimal>>> b = Decimal('nan')>>> print(b)NaN>>> print(repr(b))Decimal('NaN')>>>>>> Decimal(float('nan'))Decimal('NaN')>>> >>> import math>>> math.isnan(b)True

math.isnan(...)
也可以使用Decimal对象。


但是,您 不能
在Python的分数模块中构造NaN数字:

>>> from fractions import Fraction>>> Fraction('nan')Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "C:Python35libfractions.py", line 146, in __new__    numerator)ValueError: Invalid literal for Fraction: 'nan'>>>>>> Fraction(float('nan'))Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "C:Python35libfractions.py", line 130, in __new__    value = Fraction.from_float(numerator)  File "C:Python35libfractions.py", line 214, in from_float    raise ValueError("Cannot convert %r to %s." % (f, cls.__name__))ValueError: Cannot convert nan to Fraction.

顺便说一句,您也可以执行

float('Inf')
Decimal('Inf')
math.inf
(3.5+)来分配无限数。(另请参阅
math.isinf(...)

但是,这样做

Fraction('Inf')
Fraction(float('inf'))
不允许这样做都会抛出异常,就像NaN一样。

如果您想使用一种快速简便的方法来检查数字既不是NaN也不是无限,则可以使用

math.isfinite(...)
Python
3.2+以上版本。


如果要对复数进行类似的检查,则该

cmath
模块包含与该模块相似的一组函数和常量
math

  • cmath.isnan(...)
  • cmath.isinf(...)
  • cmath.isfinite(...)
    (Python 3.2及更高版本)
  • cmath.nan
    (Python 3.6及更高版本;等效于
    complex(float('nan'), 0.0)
  • cmath.nanj
    (Python 3.6及更高版本;等效于
    complex(0.0, float('nan'))
  • cmath.inf
    (Python 3.6及更高版本;等效于
    complex(float('inf'), 0.0)
  • cmath.infj
    (Python 3.6及更高版本;等效于
    complex(0.0, float('inf'))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号