2017-02-28 61 views
0

我有以下函數做平均平均百分比錯誤:隱式處理維度?

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處理這個內部OR如果我可以用不同的方式調用這個函數,所以我不需要明確地檢查dims。

回答

2

負軸數從過去的軸數,所以要無條件地沿最後軸綜上所述,你可以指定axis=-1

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