They'd probably get a 3X speedup (at least) just by moving to a compiled language.
False. The bottleneck is matrix multiplication.
numpy uses a BLAS library to do matrix multiplication, and most BLAS libraries are written in a compiled language.
Hence, you can improve speed by improving your matrix multiplication. Either use a faster BLAS implementation, like goto BLAS (http://www.tacc.utexas.edu/resources/software/), or do your matrix multiplication on a faster processor, like a GPU.