averaging over same index [message #45293] |
Tue, 23 August 2005 09:22 |
andi.walther
Messages: 1 Registered: August 2005
|
Junior Member |
|
|
Hello,
I have an array V(alues) and an array S(ubscripts of a target array)
and I want to
extract the mean of all values with the same index in order to put them
into the new array.
As a simple example:
V = [ 3, 7, 99, 5, 2 , 10]
S = [ 1, 3, 3, 2 , 0 ,1]
new vector should be --> new = [ 2 , 6.5 , 5, 53 ]
slow way would be: for n = 0 , max(S)-1 do new[n]=mean(v[where(S eq
n)])
a bit faster without WHERE in the loop:
VSorted = v[sort(S)]
SSorted = S[sort(S)]
uu = uniq(iSorted)
for n = 0 , n_elements(uu)-1 do new[iSorted[uu[n]]] =
mean(vSorted[n:(n-1)>0])
But is there a way to do what I want without resorting to
a loop? In my real-world problem I have vectors with 500000 elements
and the number of the occurence of indices
are quite irragular and can exceed 30 times.
Thanks Andi
|
|
|