After some more investigation, it looks like all numpy generic types have an `item` method that returns a Python type:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.item.html?highlight=item#numpy.ndarray.item

This is always called by the asscalar method:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.asscalar.html

The docs for this function seem to be wrong. The input type is *never* preserved. I'll PR that...

Did you happen to try this already?