Because using `add.reduce(w, axis=axis)` is generally faster than `w.sum(axis)` (enough so that it is still worthwhile even after taking into account the cost of the `if axis is None` statement).  However, `w.sum()` is much faster than `np.sum(w)`, so I'll update the code.

And since you are probably going to ask:  yes, I think the benefit, while not huge, is enough that it is worth having the extra couple lines of code.  There will always be some subjectivity when deciding among readability, simplicity and performance.