[Numpy-discussion] Array accumulation in numpy

Tony Ladd tladd@che.ufl....
Tue Feb 19 09:00:25 CST 2013


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

-- 
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



More information about the NumPy-Discussion mailing list