Numpy错误:在exp中遇到下溢

时间:2017-06-26 18:08:19

标签: python numpy error-handling floating-point

我试图定义一个简单的指数,不管我在指数的参数中加入的数字,我得到以下内容:

FloatingPointError: underflow encountered in exp

我想要定义的数组如下:

     time = np.arange(length)
     window = np.exp(-(time-512)**2/1000.0)

其中length = 4096。我对Python缺乏经验,看到类似的问题在这里得到了回答,但我并没有真正理解它。我还应该注意,此代码之前运行没有问题。

1 个答案:

答案 0 :(得分:2)

分解你为最终元素计算的内容:

temp1 = 4096 - 512
temp2 = temp1**2
temp3 = -temp2
temp4 = temp3 / 1000.0

temp4是-12845.056

现在,当您尝试使用该数字的自然反对数时会发生什么? numpy中允许的浮点值的范围是多少?

我相信你会发现你只是试图让它太小。如果这是计算中的中间结果,我建议您将该数字保存为自然日志,直到您可以再次将其设置为更大。或者,研究一些软件包来支持极值,或者将所有值乘以一个足以保持精度的标量。