检索导致运行时警告的数组元素

时间:2017-02-08 12:56:08

标签: python python-2.7 numpy

当我将numpy.exp应用于数字数组时,我得到以下运行时警告:

RuntimeWarning: overflow encountered in exp

现在我知道这个数组中的某些值导致exp的结果溢出但我不知道哪一个(这个数组有数百万个条目)。

有没有办法让这个运行时警告更加冗长,因为它还会显示导致溢出的特定参数(更重要的是它在输入数组中的位置)?我发现了seterrseterrcall但是它们似乎没有包含导致错误的内容(只是错误的内容)。

我知道 - 在遇到此警告后 - 我可以将数组中的每个值分别传递给exp并注意警告或我可以使用isfinite来测试{{{}}的元素1}}。然而,这意味着搞乱实际的代码,而我宁愿numpy在幕后做这种事情(正确配置)。

编辑:我被要求发布一些重现错误的代码。这是:

exp(array)

我想知道索引为>>> import numpy >>> array = numpy.zeros((10,), dtype=float) >>> array[0] = 1.0e308 >>> numpy.exp(array) __main__:1: RuntimeWarning: overflow encountered in exp array([ inf, 1., 1., 1., 1., 1., 1., 1., 1., 1.]) 的元素导致溢出(不仅仅是溢出发生在某处)。

1 个答案:

答案 0 :(得分:-1)

问题在于exp(1e308)太大而不能浮动!

如果您考虑exp函数,知道1.7976931348623157e+308是浮点数的最大值,请从数组中删除log(1.7976931348623157e+308) = 709下面的所有值