使用数组参数捕获函数中的'division by zero'



我将一个值数组作为参数传递给函数。此函数在某个位置除以作为参数给定的值。我想绕过零值的计算,这样我就不必除以零。

import numpy as np
def test(t):
e = np.where(t==0,0,10/t)
return e
i = np.arange(0, 5, 1)
print('in: ',i)
o = test(i)
print('out:',o)

输出为

in:  [0 1 2 3 4]
out: [ 0.         10.          5.          3.33333333  2.5       ]
<ipython-input-50-321938d419be>:4: RuntimeWarning: divide by zero encountered in true_divide
e = np.where(t==0,0,10/t)

我认为np.where是合适的函数,但不幸的是,我总是收到一个运行时警告"除以零"。所以,它做了正确的事情,但警告令人讨厌。我当然可以压制警告,但我想知道是否有更清洁的解决方案来解决这个问题?

使用np.divide(10, t, where=t!=0):

import numpy as np
def test(t):
e = np.divide(10, i, where=i!=0)
return e
i = np.arange(0, 5, 1)
print('in: ',i)
o = test(i)
print('out:',o)

是的,您可以测试除数是否为零,就像您所做的那样,但可以考虑测试它是否等于浮点零0.0,或者以其他方式提供浮点参数。

更改test

def test(t):
e = np.where(t==0.0,0,10.0/t) # Note : t == 0.0 (a float comparison)
return e

和/或使用浮点参数:

i = np.arange(0., 5., 1.)

也会给你一个没有异常的结果。

相关内容

  • 没有找到相关文章

最新更新