title: The difference of pseudo-inverse between SciPy and Numpy
body: <p>I found that there're two versions of <code>pinv()</code> function, which calculates the pseudo-inverse of a matrix in <code>Scipy</code> and <code>numpy</code>, the documents can be viewed at:</p>
  
  <p><a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.pinv.html">http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.pinv.html</a></p>
  
  <p><a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.pinv.html">http://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.pinv.html</a></p>
  
  <p>The problem is that I have a 50000*5000 matrix, when using <code>scipy.linalg.pinv</code>, it costs me more than 20GB of memory. But when I use <code>numpy.linalg.pinv</code>, only less than 1GB of memory is used..</p>
  
  <p>I was wondering why <code>numpy</code> and <code>scipy</code> both have a <code>pinv</code> under different implemention. And why their performances are so different. </p>