`int` can be assumed to be at least 32 bits, since NumPy won't compile on a 16-bit processor (and neither will CPython, I think). And yes, there is an optimization in recent Cython that will create the index type, though it doesn't always work.

I'm +1 on using `npy_intp`, though, since as you said it doesn't create significant overhead and it prevents segfaults when people use very large datasets. I wish all of scikit-learn were 64-bit clean.