【问题标题】:Tracing Python warnings/errors to a line number in numpy and scipy将 Python 警告/错误跟踪到 numpy 和 scipy 中的行号
【发布时间】:2011-05-10 14:26:15
【问题描述】:

我收到错误:

Warning: invalid value encountered in log

来自 Python,我相信错误是由 numpy 引发的(使用版本 1.5.0)。但是,由于我在几个地方调用了“日志”函数,我不确定错误来自哪里。有没有办法让 numpy 打印产生此错误的行号?

我假设警告是由于取一个小到可以四舍五入为 0 或更小(负数)的数字的对数引起的。那正确吗?这些警告的通常来源是什么?

【问题讨论】:

    标签: python numpy scipy numeric scientific-computing


    【解决方案1】:

    np.seterr(invalid='raise') 放入您的代码中(在错误的log 调用之前) 将导致 numpy 引发异常而不是发出警告。 这会给你一个回溯错误消息,并告诉你发生错误时 Python 正在执行的行。

    【讨论】:

      【解决方案2】:

      如果您可以访问 numpy 源,您应该能够找到打印该警告的行(使用 grep 等)并编辑相应的文件以在无效时强制错误(例如使用断言)值被传递。这将为您提供一个堆栈跟踪,指向代码中调用 log 值不正确的位置。

      我简要查看了我的 numpy 源代码,但找不到与您描述的警告相匹配的任何内容(不过,我的 numpy 版本比您的旧)。

      >>> import numpy
      >>> numpy.log(0)
      -inf
      >>> numpy.__version__
      '1.3.0'
      

      您是否可能正在调用其他一些不在 numpy 中的日志函数?例如,当输入无效时,这里实际上会引发异常。

      >>> import math
      >>> math.log(0)
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ValueError: math domain error
      

      【讨论】:

        猜你喜欢
        • 2021-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        相关资源
        最近更新 更多