我有以下函数来做平均百分比误差:
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。
答案 0 :(得分:2)
负轴编号从最后一个轴开始计数,因此要沿最后一个轴无条件求和,您可以指定axis=-1
:
return np.sum(np.abs(ys - yhat), axis=-1) / float(np.sum(ys))