Python:如何打印RuntimeWarning的原因:在更大版本中遇到无效值

2024-09-30 16:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

有时会抛出警告:

RuntimeWarning: invalid value encountered in greater...

每当抛出此警告时,我想打印“较大”的值,以便检查可变权重并消除问题

对于此警告的某些实例,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核存储循环加权平均的权重


Tags: 实例函数none警告forif表达式np
1条回答
网友
1楼 · 发布于 2024-09-30 16:33:43

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

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

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

相关问题 更多 >