【问题标题】:Python: How to print out the cause of RuntimeWarning: invalid value encountered in greaterPython:如何打印出 RuntimeWarning 的原因:在更大时遇到无效值
【发布时间】:2020-08-14 05:09:18
【问题描述】:

在我的模拟中,当在 for 循环中达到这样的函数表达式时:

d1ToUse = d2Weights[:,i] > 1e-9 

有时会引发警告:

RuntimeWarning: invalid value encountered in greater...

每当抛出此警告时,我想打印出“更大”的值,以检查变量 d2Weights 并消除问题。

对于此警告的某些实例,d2Weights 变量是一个空列表。我试图通过以下任何过滤器过滤掉这些实例,从而从分析中消除它们:

            if d2Weights[:,i] == []:
                continue
            if np.any(d2Weights[:, i] == None):
                continue
            if np.any(d2Weights[:, i] == np.nan):
                continue
            if sum(d2Weights[d1ToUse, i]) == 0.0:
                continue
            if d2Weights[d1ToUse, i] is None:
                continue
            if np.any(d2Weights[d1ToUse, i] == None):
                continue
            if np.any(d2Weights[d1ToUse, i] == np.nan):
                continue

由于问题仍然存在,我想看看“更大”值是如何检查它并确定根本原因的。

我不想抑制这个警告,因为每当它被抛出时,我的模拟行为都会很奇怪。

如有任何建议,我将不胜感激。

编辑:

d2Weights 是带有浮点数的 numpy 数组。它存储权重,用于使用 RBF 内核进行循环加权平均。

【问题讨论】:

  • 你能不使用调试器来检查更大的值和框架调用吗?
  • 不要将==Nonenp.nan 一起使用。使用is Nonenp.isnan。也关注dtypeNone 将仅存在于 object dtype 数组中。 np.nan 是一个浮点数。
  • 您不应该针对空列表 [] 测试 numpy 数组。您可以查看shape
  • 让我们了解d2Weights 是什么。形状、数据类型、可能的值。

标签: python numpy spyder


【解决方案1】:

您可以使用 warnings 库: https://docs.python.org/3/library/warnings.html https://www.geeksforgeeks.org/warnings-in-python/

警告过滤器控制警告是被忽略、显示还是变成错误(引发异常)。 因此您可以将警告转换为错误,并将代码中的关键行放在 try 中。然后,您可以使用 except 块来找出导致问题的原因并打印出例如“更大”的值。 https://www.w3schools.com/python/python_try_except.asp

希望这会有所帮助。我实际上是 python 的初学者,但本周我遇到了类似的问题。

【讨论】:

    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 2021-12-28
    • 2013-02-18
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多