Since your indexes and data are integers, you can save your data in a file and access it as if it was an array, but only the pages you are working on will be in the RAM, the others will stay on the disk.
See http://docs.python.org/2/library/mmap.html
mmap is byte-based which means that an index in that will be like index*sizeof(int) on your architecture, and you will need to read sizeof(int) bytes instead of just one byte, and use the struct module (http://docs.python.org/2/library/struct.html) to convert that into a python integer.
This solution is a bit slower than using an array if all the data fits in the RAM, if your system starts paging out then this solution will be faster than using normal arrays.