运行时警告:在np.exp中遇到溢出(x ** 2)

时间:2014-07-08 17:28:03

标签: python numpy exp

我需要计算exp(x**2) x = numpy.arange(30,90)。这引发了警告:

RuntimeWarning: overflow encountered in exp
inf

我无法安全地忽略此警告,但SymPy和mpmath都不是解决方案,我需要执行数组操作,因此Numpy解决方案将成为我的梦想。

有谁知道如何处理这个问题?

2 个答案:

答案 0 :(得分:3)

您可以使用具有必要范围的数据类型,例如decimal.Decimal

>>> import numpy as np
>>> from decimal import Decimal
>>> x = np.arange(Decimal(30), Decimal(90))
>>> y = np.exp(x ** 2)
>>> y[-1]
Decimal('1.113246031563799750400684712E+3440')

但你用这些数字是为了什么?你能避免取幂并使用对数吗?有关您的问题的更多细节会有所帮助。

答案 1 :(得分:1)

我认为您可以使用此方法来解决此问题:

  

归一化的

我克服了这种方法的问题。在使用此方法之前,我的分类准确度为:86%。使用此方法后,我的分类准确度为:96%! 太棒了! 第一:
Min-Max scaling
第二:
Z-score standardization

这些是实施normalization的常用方法 我使用第一种方法。我改变它。最大数量除以10。 因此,结果的最大数量为10.然后exp(-10)将不是overflow
我希望我的回答能帮到你!(^ _ ^)