我试图定义一个简单的指数,不管我在指数的参数中加入的数字,我得到以下内容:
FloatingPointError: underflow encountered in exp
我想要定义的数组如下:
time = np.arange(length)
window = np.exp(-(time-512)**2/1000.0)
其中length = 4096
。我对Python缺乏经验,看到类似的问题在这里得到了回答,但我并没有真正理解它。我还应该注意,此代码之前运行没有问题。
答案 0 :(得分:2)
分解你为最终元素计算的内容:
temp1 = 4096 - 512
temp2 = temp1**2
temp3 = -temp2
temp4 = temp3 / 1000.0
temp4是-12845.056
现在,当您尝试使用该数字的自然反对数时会发生什么? numpy中允许的浮点值的范围是多少?
我相信你会发现你只是试图让它太小。如果这是计算中的中间结果,我建议您将该数字保存为自然日志,直到您可以再次将其设置为更大。或者,研究一些软件包来支持极值,或者将所有值乘以一个足以保持精度的标量。