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 <tl...@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 <tl...@che.ufl.edu > > <mailto:tl...@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@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@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion