I'm a bit concerned that this will do something valid for any value of `axis`.  I think the normal range of valid axis arguments would be `-n..(n-1)`.