<br><br><div class="gmail_quote">On Fri, Feb 25, 2011 at 12:52 PM, Joe Kington <span dir="ltr"><<a href="mailto:jkington@wisc.edu">jkington@wisc.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Do you expect to have very large integer values, or only values over a limited range?  <br><br>If your integer values will fit in into 16-bit range (or even 32-bit, if you're on a 64-bit machine, the default dtype is float64...) you can potentially halve your memory usage.<br>

<br>I.e. Something like:<br>data = numpy.loadtxt(filename, dtype=numpy.int16)<br><br>Alternately, if you're already planning on using a (scipy) sparse array anyway, it's easy to do something like this:<br><br><div style="margin-left:40px;font-family:courier new,monospace">

import numpy as np<br>import scipy.sparse<br>I, J, V = [], [], []<br>with open('infile.txt') as infile:<br>    for i, line in enumerate(infile):<br>        line = np.array(line.strip().split(), dtype=<a href="http://np.int" target="_blank">np.int</a>)<br>

        nonzeros, = line.nonzero()<br>        I.extend([i]*nonzeros.size)<br>        J.extend(nonzeros)<br>        V.extend(line[nonzeros])<br>data = scipy.sparse.coo_matrix((V,(I,J)), dtype=<a href="http://np.int" target="_blank">np.int</a>, shape=(i+1, line.size))<br>

<br></div><div style="font-family:courier new,monospace"><font face="arial,helvetica,sans-serif">This will be much slower than numpy.loadtxt(...), but if you're just converting the output of loadtxt to a sparse array, regardless, this would avoid memory usage problems (assuming the array is mostly sparse, of course).<br>

<br>Hope that helps,<br>-Joe<br></font></div>        <br><br><br><div class="gmail_quote"><div><div></div><div class="h5">On Fri, Feb 25, 2011 at 9:37 AM, Jaidev Deshpande <span dir="ltr"><<a href="mailto:deshpande.jaidev@gmail.com" target="_blank">deshpande.jaidev@gmail.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div><div></div><div class="h5">
Hi<div><br></div><div>Is it possible to load a text file 664 MB large with integer values and about 98% sparse? numpy.loadtxt() shows a memory error.</div><div><br></div><div>If it's not possible, what alternatives could I have?</div>




<div><br></div><div>The usable RAM on my machine running Windows 7 is 3.24 GB.</div><div><br></div><div>Thanks.</div>
<br></div></div>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br>
<br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote><div><br></div><div>In addition to this is helpful to remember that just becuase you have 3.24 GB available, doesn't mean that 664MB of that is contiguous, which is what NumPy would need to hold it all in memory.</div>
<meta charset="utf-8"></div><br>