隐式处理维度?

Implicit handling of dimensions?

我有以下函数来计算平均百分比误差:

def mape(ys,yhat):
    if yhat.ndim == 1 :
        return np.sum(np.abs(ys - yhat)) / float(np.sum(ys))
    else :
        return np.sum(np.abs(ys - yhat), axis=1) / float(np.sum(ys))

我必须明确检查第二个操作数的维数的问题。 numpy 有没有办法在内部处理这个问题,或者如果我可以用不同的方式调用函数,那么我不需要明确地检查 dims。

负轴数从最后一个轴开始计算,所以要无条件地沿最后一个轴求和,可以指定axis=-1:

return np.sum(np.abs(ys - yhat), axis=-1) / float(np.sum(ys))