[SciPy-User] Scipy views and slicing: Can I get a view-slice from only certain elements of an array?

Robert Kern robert.kern at gmail.com
Fri Oct 29 16:30:51 EDT 2010


On Fri, Oct 29, 2010 at 15:15, Jacob Biesinger <jake.biesinger at gmail.com> wrote:

> What I can't do is create a view with arbitrary indices:
>
> scores = scipy.ones((10,1))
> subset = scores[[1,5,7]]   # not a reference!
> subset[0] = 3
> subset /= subset.sum()  # does not update scores!
>
> Is there a way to do this?

Not automatically, no. But if you keep that index list around, it's
pretty straightforward to do the update manually.

indices = [1, 5, 7]
subset = scores[indices]
subset[0] = 3
subset /= subset.sum()
scores[indices] = subset

It doesn't save you any memory, though.

numpy arrays must be described by a starting memory location and
uniform strides. It can't jump around arbitrarily in memory. Well, it
could, but it would be slow for typical cases.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the SciPy-User mailing list