<br><br><div><span class="gmail_quote">On 3/1/07, <b class="gmail_sendername">Francesc Altet</b> &lt;<a href="mailto:faltet@carabos.com">faltet@carabos.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br><br>I don&#39;t think there is a solution for this, but perhaps anybody may<br>offer some idea. Given:<br><br>In [79]:a=numpy.arange(9,-1,-1)<br>In [80]:b=numpy.arange(10)<br>In [81]:numpy.random.shuffle(b)<br>In [82]:b
<br>Out[82]:array([2, 6, 3, 5, 4, 9, 0, 8, 7, 1])<br>In [83]:a=a[b]<br>In [84]:a<br>Out[84]:array([7, 3, 6, 4, 5, 0, 9, 1, 2, 8])<br><br>is there a way to make the step 83 without having to keep 3 arrays<br>in-memory at the same time? This is, some way of doing fancy indexing,
<br>but changing the elements *inplace*. The idea is to keep memory<br>requeriments as low as possible when a and b are large arrays.<br><br>Thanks!</blockquote><div><br>You can also put the arrays together and implement it as an inplace sort, which will save space at the price of n*log(n) operations. The idea is to sort on the shuffled array while carrying the corresponding elements of the other array along in the exchanges, which I think you can now do using fields and the order keyword in the sort.
<br>Chuck<br></div><br></div><br>