当前位置: 首页 > 面试题库 >

在NumPy中忽略除以0的警告

邢承弼
2023-03-14
问题内容

我有一个统计问题的功能:

import numpy as np
from scipy.special import gamma as Gamma

def Foo(xdata):
    ...
    return x1 * (
                 ( #R is a numpy vector
                  ( ((R - x2)/beta) ** (x3 -1) ) * 
                  ( np.exp( - ((R - x2) / x4) ) ) /
                  ( x4 * Gamma(x3))
                 ).real
                )

有时我会从外壳中收到以下警告:

RuntimeWarning: divide by zero encountered in...

我使用numpyisinf函数更正其他文件中的函数结果,因此不需要此警告。

有没有办法忽略该消息?换句话说,我不希望外壳程序打印此消息。

我不想禁用所有python警告,仅禁用这一警告。


问题答案:

您可以使用禁用警告numpy.seterr。将其放在可能的除以零之前:

np.seterr(divide='ignore')

这将全局禁用零除警告。如果只想禁用它们一点,可以numpy.errstatewith子句中使用:

with np.errstate(divide='ignore'):
    # some code here

对于零除零除法(不确定,导致NaN),错误行为在numpy版本1.12.0中已更改:现在被视为“无效”,而以前被称为“除法”。

因此,如果您的分子有可能也为零,请使用

np.seterr(divide='ignore', invalid='ignore')

要么

with np.errstate(divide='ignore', invalid='ignore'):
    # some code here

请参阅发行说明中的“兼容性”部分,
以及“新功能”部分之前的最后一段:

现在比较NaN浮点数会引发无效的运行时警告。如果期望使用NaN,则可以使用np.errstate忽略该警告。



 类似资料:
  • 忽略编译器警告 格式 #pragma clang push #pragma clang diagnostic ignored "错误类型" // 存在警告的代码 #pragma clang pop > 1.在需要忽略的警告处右键 -- Reveal in Log 2.会给出警告的详细信息,其中包括警告的类型 3.高亮选中的便是这个警告的类型 4.在警告代码处增加如下代码 Command

  • 同时将warning的值设置为“all”或,没有任何结果。 checkstyle的文档很差。一些想法?

  • 有一个实体A引用(多对一)实体B,从B到A有反向(映射到)引用。还有一个引用A到C,反向引用C到A。当我发出entitymanager . remove(A)then flush()时,没有生成“delete ”!但是也没有例外。就像根本没有调用remove()一样。为什么会这样?如果在remove()之前我们从反向引用B.listOfA和C.listOfA中提取A,那么“delete”就像预期的

  • 我正在使用maven和eclipse m2e配置一个多模块的父/子maven项目,我使用的是eclipse Juno SR1的最新内容,即m2e 1.2.0 父pom使用enforcer插件,因此父pom.xml的插件部分包含以下内容 每个子项目都有一个错误消息,表示 这条消息的意思是什么? 如何配置内容以删除此消息? 需要配置eclipse项目设置还是pom.xml设置?

  • 我正在使用maven和eclipse m2e配置一个多模块父子maven项目,我使用的是eclipse Juno SR1的最新内容,即m2e 1.2.0 父pom使用enforcer插件,因此父pom使用enforcer插件。xml的插件部分包含以下内容 每个子项目都有一条错误消息,表示m2e忽略了maven enforcer插件(目标“enforce”) 这条信息是什么意思? 如何配置东西以删除

  • 问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc