我在python脚本中隐藏了一些简单的数学,并得到了以下警告:
“警告:在分裂中遇到零除。”
为了提供一些上下文,我正在使用两个值并尝试查找值(a - b) / a
的百分比差异,如果它超出某个范围,则处理它,但有时会a
或{的值{1}}为零。
我想摆脱这个特定的警告(在特定的一行),但到目前为止我找到的所有信息似乎都告诉我如何停止所有警告(我不想要)。
当我以前写shell脚本时,我可以做这样的事情
b
在那个例子中,我会得到'代码'和'甚至更多代码'命令的警告,但不是第二行的警告。
这可能吗?
答案 0 :(得分:68)
如果Scipy正在使用warnings
模块,那么您可以禁止显示特定警告。在程序开始时尝试这个:
import warnings
warnings.filterwarnings("ignore", message="divide by zero encountered in divide")
如果您希望这仅适用于代码的一部分,请使用警告上下文管理器:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", message="divide by zero encountered in divide")
# .. your divide-by-zero code ..
答案 1 :(得分:12)
我首先要避免被零除:
if a == 0:
# Break out early
# Otherwise the ratio makes sense
如果你想在一行上压制那个特定的numpy警告,numpy会提供a way:
with numpy.errstate(divide='ignore'):
# The problematic line