RuntimeWarning仅显示一次后消失,如何使其持续显示?
问题原因
numpy默认对同类型的RuntimeWarning启用了警告过滤机制,采用once策略——相同触发原因的警告只会在第一次出现时显示,后续重复触发会被自动抑制,目的是避免大量重复警告刷屏,影响输出可读性。
解决方法
以下两种方式都能让警告每次触发都显示:
方式1:修改numpy自身的警告配置
直接调用numpy的seterr()函数,把对应警告的模式设为warn,就能让同类型警告每次触发都输出:
import numpy as np # 针对所有numpy警告生效 np.seterr(all='warn') # 也可以只针对无效值相关的警告(更精准) # np.seterr(invalid='warn') arr = np.array([np.inf]) arr - arr # 第一次触发警告 arr - arr # 第二次同样触发警告
方式2:用Python标准库调整全局警告规则
通过warnings模块修改全局过滤规则,强制让RuntimeWarning每次都显示:
import warnings import numpy as np # 设定对RuntimeWarning类型的警告始终显示 warnings.filterwarnings('always', category=RuntimeWarning) arr = np.array([np.inf]) arr - arr # 第一次显示警告 arr - arr # 第二次也显示警告
内容的提问来源于stack exchange,提问作者OfirD
相关产品推荐
相关产品推荐

