[Numpy-discussion] Array accumulation in numpy
Eraldo Pomponi
eraldo.pomponi at gmail.com
Tue Feb 19 10:38:52 EST 2013
Dear Tony,
I would suggest to look at this post already mentioned by Benjamin .....
maybe it fits with your needs!
http://numpy-discussion.10968.n7.nabble.com/Pre-allocate-array-td4870.html
Cheers,
Eraldo
On Tue, Feb 19, 2013 at 4:24 PM, Tony Ladd <tladd at che.ufl.edu> wrote:
> Thanks to all for a very quick response. np.bincount does what I need.
>
> Tony
>
> On 02/19/2013 10:04 AM, Benjamin Root wrote:
> >
> >
> > On Tue, Feb 19, 2013 at 10:00 AM, Tony Ladd <tladd at che.ufl.edu
> > <mailto:tladd at che.ufl.edu>> wrote:
> >
> > I want to accumulate elements of a vector (x) to an array (f) based
> on
> > an index list (ind).
> >
> > For example:
> >
> > x=[1,2,3,4,5,6]
> > ind=[1,3,9,3,4,1]
> > f=np.zeros(10)
> >
> > What I want would be produced by the loop
> >
> > for i=range(6):
> > f[ind[i]]=f[ind[i]]+x[i]
> >
> > The answer is f=array([ 0., 7., 0., 6., 5., 0., 0., 0.,
> > 0., 3.])
> >
> > When I try to use implicit arguments
> >
> > f[ind]=f[ind]+x
> >
> > I get f=array([ 0., 6., 0., 4., 5., 0., 0., 0., 0., 3.])
> >
> >
> > So it takes the last value of x that is pointed to by ind and adds
> > it to
> > f, but its the wrong answer when there are repeats of the same
> > entry in
> > ind (e.g. 3 or 1)
> >
> > I realize my code is incorrect, but is there a way to make numpy
> > accumulate without using loops? I would have thought so but I cannot
> > find anything in the documentation.
> >
> > Would much appreciate any help - probably a really simple question.
> >
> > Thanks
> >
> > Tony
> >
> >
> > I believe you are looking for the equivalent of accumarray in Matlab?
> >
> > Try this:
> >
> > http://www.scipy.org/Cookbook/AccumarrayLike
> >
> > It is a bit touchy about lists and 1-D numpy arrays, but it does the job.
> > Also, I think somebody posted an optimized version for simple sums
> > recently to this list.
> >
> > Cheers!
> > Ben Root
> >
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
> --
> Tony Ladd
>
> Chemical Engineering Department
> University of Florida
> Gainesville, Florida 32611-6005
> USA
>
> Email: tladd-"(AT)"-che.ufl.edu
> Web http://ladd.che.ufl.edu
>
> Tel: (352)-392-6509
> FAX: (352)-392-9514
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130219/f67ed04e/attachment.html>
More information about the NumPy-Discussion
mailing list