I can try to add some commentary about this timing information:
In : %timeit x[67, 456]
Is very inefficient for SciDB-Py, since the overhead of talking to the database, setting up the data transfer, etc. dominates the actual download
is better, since most of the time will be spent in data transfer. To reconstruct your array locally, SciDB-py needs to download the 2D array index and value of each element -- this ends up being about 11MB of data (800 x 600 x (8 bytes for value + 8 bytes for index1 + 8 bytes for index2)). The execution time is mostly occupied by shipping these 11MB over HTTP.
SciDB-Py and SciDB-R both use Shim to communicate with SciDB, which is why we use HTTP (shim is an HTTP library). We are exploring various ways of speeding up the communication -- using another protocol besides HTTP is one option, as is compressing the data during transfer. We could also save on bandwidth by not transferring the array indices, but this is currently necessary, since SciDB streams array contents in a non-contiguous, chunked fashion.
For some more context, here's a small notebook that looks at the speed of toarray() for 1D arrays, as a function of element size. You can see that, on my machine SciDB-Py is most efficient for arrays with ~1M or more elements
nbviewer.ipython.org/gist/ChrisB ... 115f4c76c0