[Numpy-discussion] In-place fancy selection

Charles R Harris charlesr.harris at gmail.com
Thu Mar 1 15:26:09 EST 2007


On 3/1/07, Francesc Altet <faltet at carabos.com> wrote:
>
> Hi,
>
> I don't think there is a solution for this, but perhaps anybody may
> offer some idea. Given:
>
> In [79]:a=numpy.arange(9,-1,-1)
> In [80]:b=numpy.arange(10)
> In [81]:numpy.random.shuffle(b)
> In [82]:b
> Out[82]:array([2, 6, 3, 5, 4, 9, 0, 8, 7, 1])
> In [83]:a=a[b]
> In [84]:a
> Out[84]:array([7, 3, 6, 4, 5, 0, 9, 1, 2, 8])
>
> is there a way to make the step 83 without having to keep 3 arrays
> in-memory at the same time? This is, some way of doing fancy indexing,
> but changing the elements *inplace*. The idea is to keep memory
> requeriments as low as possible when a and b are large arrays.
>
> Thanks!


I think that would be tough because of overlap between the two sides. The
permutation could be factored into cycles which would mostly avoid that, but
that is more theoretical than practical here. What is it you are trying to
do?

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070301/f0435e44/attachment.html>


More information about the NumPy-Discussion mailing list