-1

我以这种方式在python中定义一个函数:

def calculate(y1,y2,y):
    l=np.log(3)
    ya=np.array(y1)/(np.array(y)*np.array(l))
    yb=np.array(y2)/(np.array(y)*np.array(l))
    return (ya,yb)

但是当我运行我的脚本时(即使一切正常),我收到以下错误:

RuntimeWarning: invalid value encountered in divide
ya = np.array(y1)/((np.array(y))*(l))
RuntimeWarning: invalid value encountered in divide
yb = np.array(y2)/((np.array(y))*(l))

我该如何解决这个问题?

4

1 回答 1

0

您收到该错误是因为分母数组中有一个0或一个np.inf值。

y除了在它到达之前清理之外,你无能为力calculcate

def calculate(y1, y2, y):
    if not isinstance(y, np.ndarray):
        y = np.array(y)

    if not np.isfinite(y):
        print 'bad y array values'
        return

    elif np.sum(y == 0) > 0:
        print 'zero values in y'
        return

    # the rest of your code

请注意,这将停止RunTimeWarning但不会返回任何内容,因此调用的函数calculate必须处理它。

于 2013-03-07T14:37:44.630 回答