title: Python NUMPY HUGE Matrices multiplication
body: <p>I need to multiply two big matrices and sort their columns.</p>
  
  <pre><code> import numpy
   a= numpy.random.rand(1000000, 100)
   b= numpy.random.rand(300000,100)
   c= numpy.dot(b,a.T)
   sorted = [argsort(j)[:10] for j in c.T]
  </code></pre>
  
  <p>This process takes a lot of time and memory. Is there a way to fasten this process? If not how can I calculate RAM needed to do this operation? I currently have an EC2 box with 4GB RAM and no swap. </p>
  
  <p>I was wondering if this operation can be serialized and I dont have to store everything in the memory.</p>