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

在没有numpy的python中分配变量NaN,第1张

在没有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'))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5644765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存