On 1/6/07, Robert Kern <[EMAIL PROTECTED]> 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
_______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion