I wasn't aware of `slice.indices`.  It's likely that I'm missing confusing details and knowledge like this is helpful. 

I stand by `X[2]` if only for consistency with numpy.