【问题标题】:How to raise error for nan value in python numpy如何在 python numpy 中引发 nan 值的错误
【发布时间】:2021-02-11 15:32:34
【问题描述】:

我需要自动引发错误,如果我使用“/”运算符在 numpy 数组中除以零,或者如果我执行任何操作会更好,这会导致 nan。

numpy 的作用是返回 nan 值。在那之后我不需要我的程序运行,因为显然有一个错误。

我想知道何时使用除以零以及在哪一行。只是禁止创建任何 nan 值。

【问题讨论】:

    标签: python numpy nan divide-by-zero raiseerror


    【解决方案1】:

    默认行为是发出警告,但您可以使用np.seterr 设置行为:

    >>> import numpy as np
    >>> np.array([1,2,3]) / np.array([0, 1, 2])
    __main__:1: RuntimeWarning: divide by zero encountered in true_divide
    array([inf, 2. , 1.5])
    

    我们把它改成“raise”之后:

    >>> np.seterr(divide='raise')
    {'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
    >>> np.array([1,2,3]) / np.array([0, 1, 2])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    FloatingPointError: divide by zero encountered in true_divide
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      # sample data
      arr1 = np.array([1,2,3,4])
      arr2 = np.array([1,1,0,1])
      
      # this will raise the error
      assert (arr2!=0).all(), 'Division by zero'
      
      # divide
      arr1/arr2
      

      当你运行代码时,你会得到:

            4 
            5 # this will raise the error
      ----> 6 assert (arr2!=0).all(), 'Division by zero'
            7 
            8 # divide
      
      AssertionError: Division by zero
      

      【讨论】:

        猜你喜欢
        • 2021-11-18
        • 1970-01-01
        • 2017-07-04
        • 2019-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-11
        • 2021-06-27
        相关资源
        最近更新 更多