numpy 将生成nan值的所有操作(python)[重复]

ikfrs5lh  于 2023-01-30  发布在  Python
关注(0)|答案(2)|浏览(114)

此问题在此处已有答案

What are some possible calculations with numpy or scipy that can return a NaN? [closed](1个答案)
八年前就关门了。
这可能是一个简单的问题,但我不能在一个地方得到所有的答案,所以任何帮助和答案是受欢迎的:).我试图调试一个程序,但后来我意识到我不知道什么是所有可能的操作,可能会导致在python的NAN值.所以这里的问题是什么是所有可能的操作,将导致在python的NAN值特别是numpy矩阵?
举个例子

x=float('nan')
x=x+x
print x

导致

nan
nbysray5

nbysray51#

NaN是IEEE 754标准的一部分。类似但不限于inf * 0、inf / inf的操作或任何涉及NaN的操作(例如nan * 1)返回NaN。
http://en.wikipedia.org/wiki/IEEE_754-1985

6qftjkof

6qftjkof2#

在numpy land中,你经常会因为非法的数学运算而得到nan s。

>>> from math import asin
>>> asin(1.1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

在numpy中进行类似的操作会生成一个nan:

>>> from numpy import arcsin
>>> arcsin(1.1)
__main__:1: RuntimeWarning: invalid value encountered in arcsin
nan

注意,在(python的)默认情况下,你只会得到一次警告。
调试时,查找非法操作,特别是域错误:除以零、负数的平方根等。
nans的第二个主要来源是inf/inf、0/0、0*inf等形式的不定表达式。
最后,由于nans是粘性的(一旦你在表达式中有了第一个nan,它就会传播),在调试时,你通常需要找到 * 第一个 * 失控的操作。

相关问题