2024-02-26 02:46:37 | 我爱编程网
NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。NaN 实际上不是一个数,而是一族。
NAN Not A Number就是代表不是一个数据。一般出现这个东西的原因有两个:
你的程序里出现0作为分母的运算,这个时候可以考虑把被除矩阵整体加一个无限小量,例如1e-10。这样可以消除0作分母的现象。
如果上面这个做法不管用,就是你自己的算法和编程的问题了,导致结果不收敛,发散。
在浮点数运算中,NaN与无穷大的概念不同,尽管两者均是以浮点数表示实数时的特殊值。无效操作(Invalid Operation)同样也不同于算术溢出(可能返回无穷大)和算术下溢出(可能返回最小的一般数值、特殊数值、零等)。
IEEE 754-1985中,用指数部分全为1、小数部分非零表示NaN。以32位IEEE单精度浮点数的NaN为例,按位表示即:S111 1111 1AXX XXXX XXXX XXXX XXXX XXXX,S为符号位,符号位S的取值无关紧要;A是小数部分的最高位( the most significant bit of the significand),其取值表示了NaN的类型:X不能全为0,并被称为NaN的payload;
Python中的
浮点数
遵循
IEEE 754
标准,标准中对非数值(NaN)的定义是
指数部分全为1,而小数部分不全为0
如果一个浮点数符合上面定义的形式,那么它就是一个非数值(NaN)。在Python中,用math.nan表示。产生非数值的原因通常是对两个无穷大值进行了算术运算,例如:
>>> a = float('inf')
>>> b = float('-inf')
>>> print(a + b)
nan
需要注意的是不能使用==
运算符
判断一个浮点数是否为非数值,而应该使用isnan()方法:
>>> import math
>>> a = math.nan
>>> print(a == math.nan)
False
>> print(math.isnan(a))
True我爱编程网
数据中出现nan是下载环境不佳或下载软件资源不稳定的意思。NaN表示无限。
NaN是英文"Not a Number"的缩写,表示不是一个数字。在计算机科学中,NaN是一种特殊的数值类型,用于表示无效或未定义的数值结果。当进行数值计算时,如果出现了无法确定或无法表示的结果,就会返回NaN。
例如,当进行非数值运算(如将字符串与数字相加)或进行无效的数学运算(如对负数进行平方根)时,就会得到NaN。
2024-01-01 09:58:48
2024-01-26 10:37:53
2024-01-17 23:29:33
2024-01-02 22:06:16
2024-01-01 04:24:22
2023-12-23 12:08:32