sten
sten

Reputation: 7476

Implicit handling of dimensions?

I have the following function to do Mean Average Percentage Error :

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))

The problem I have to explicitly check for the number of dimensions of the second operand. is there a way for numpy to handle this internally OR if I can call the function in different way, so I dont need to check dims explicitly.

Upvotes: 0

Views: 37

Answers (1)

user2357112
user2357112

Reputation: 280554

Negative axis numbers count from the last axis, so to unconditionally sum along the last axis, you can specify axis=-1:

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

Upvotes: 2

Related Questions