[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