2017-06-26 79 views
0

我试图定义一个简单的指数也不管我投入指数这一论点的数字,我得到以下的溢遇到m试图定义如下:NumPy的错误:</p> <p><code>FloatingPointError: underflow encountered in exp</code></p> <p>的阵列I”:在进出口

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

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

+0

你确定你不想'1000 ** 2'而不是'1000'吗?考虑到你正在使用的值的大小,“1000”的因素看起来不太可能。 –

回答

2

细分你计算什么的最后一个元素:

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

temp4是-12845.056

现在,会发生什么,当你尝试走天然抗日志号的? numpy允许的float值的范围是多少?

我相信你会发现你只是试图让它太小。如果这是一个计算的中间结果,我建议你把这个数字作为一个自然对数,直到你可以再次变大。或者,研究一些软件包以支持极端值,或将所有值乘以足够大的标量以保持精确度。

+0

谢谢!我很困惑,因为代码在一个文件夹中没有任何错误消息运行,但我有一个父目录中的笔记本副本。父目录中的一个给我提出问题。我在发布这个问题之前和之后都试过了文件夹中的副本,它工作得很好。你知道为什么会这样吗? –

+0

不知道。尝试插入几个打印语句来报告“长度”并跟踪创建。你可以手动缩短“长度”来检查基本操作吗? – Prune

+0

e^-12845.056 = 2.9 ... e-5579。这会使双精度(80位)浮点类型下溢。 –

相关问题