Ignore divide by 0 warning in NumPy

后端 未结 2 1633
谎友^
谎友^ 2020-12-08 06:17

I have a function for statistic issues:

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

def Foo(xdata):
    ...
    return x1 * (
                       


        
相关标签:
2条回答
  • 2020-12-08 07:03

    You could also use numpy.divide for division. That way you don't have to explicitly disable warnings.

    In [725]: np.divide(2, 0)
    Out[725]: 0
    
    0 讨论(0)
  • 2020-12-08 07:13

    You can disable the warning with numpy.seterr. Put this before the possible division by zero:

    np.seterr(divide='ignore')
    

    That'll disable zero division warnings globally. If you just want to disable them for a little bit, you can use numpy.errstate in a with clause:

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

    For a zero by zero division (undetermined, results in a NaN), the error behaviour has changed with numpy version 1.12.0: this is now considered "invalid", while previously it was "divide".

    Thus, if there is a chance you your numerator could be zero as well, use

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

    or

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

    See the "Compatibility" section in the release notes, last paragraph before the "New Features" section:

    Comparing NaN floating point numbers now raises the invalid runtime warning. If a NaN is expected the warning can be ignored using np.errstate.

    0 讨论(0)
提交回复
热议问题