[Numpy-discussion] Fwd: Advanced selection, duplicate indices, and augmented assignment

Timothy Hochberg tim.hochberg at ieee.org
Sat Jan 6 22:25:08 EST 2007


On 1/6/07, Robert Kern <robert.kern at gmail.com> wrote:
>
> Sean R. Lynch wrote:
>
> >>>> x = zeros((3,))
> >>>> x[array([0, 1, 1])] += array([1, 1, 1])
> >>>> x
> > array([ 1.,  1.,  0.])
> >
> > If this worked the way I was hoping, the output would be [1 2 0] because
>
> > it would add to element 1 twice due to its duplication in the advanced
> > selection array.
> >
> > Is the current behavior intentional or is it an accident of
> > implementation?
>
> It is an unavoidable consequence of the way Python interprets that code
> and the
> way numpy arrays are fundamentally implemented. See Travis Oliphant's, Tim
> Hochberg's and my posts in the thread "Histograms via indirect index
> arrays" for
> more details.
>
>
> http://projects.scipy.org/pipermail/numpy-discussion/2006-March/thread.html#6877


Do we have to revisit that thread? I seem to recall it getting kind of
cranky. To avoid reliving that, I will attempt dredge up the relevant issue:


"a[indx]+=b" should be the same as "a[indx]=a[indx]+b". All else follow from
that. If staring at that for a while doesn't enlighten you, then you will
have to read that thread.

[ I suspect that in theory we could make the += form behave as you expect,
but that would break the identity above, which would confuse a bunch of
people]

-tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20070106/8fadfe24/attachment.html>


More information about the NumPy-Discussion mailing list