[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: Re: Vectorization question*From*: "Liam E. Gumley" <Liam.Gumley(at)ssec.wisc.edu>*Date*: Mon, 11 Sep 2000 17:06:11 -0500*Newsgroups*: comp.lang.idl-pvwave*Organization*: Space Science and Engineering Center, UW-Madison*References*: <39BD53C5.78E9D166@ssec.wisc.edu>*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:21361

"Liam E. Gumley" wrote: > > Given the following arrays > > a = intarr(10) > x = [2, 2, 2, 3, 3, 4] > b = [1, 3, 4, 2, 1, 8] > > How would I vectorize the following operation > > for i = 0, n_elements(x) - 1 do a[x[i]] = a[x[i]] + b[i] > > To achieve this result > > print, a, format='(10i4)' > 0 0 8 3 8 0 0 0 0 0 > > In the real-world case where this occurs, I need to repeat this kind of > operation several hundred times, where the size of 'a' is around > 1,000,000 and the size of 'x' is around 100,000 ('a' and 'b' are float > type in the real-world case). Here's one solution: a = intarr(10) x = [2, 2, 2, 3, 3, 4] b = [1, 3, 4, 2, 1, 8] tmp = intarr(n_elements(a), n_elements(x)) tmp[x, indgen(n_elements(x))] = b print, a + total(tmp, 2), format='(10i4)' 0 0 8 3 8 0 0 0 0 0 It's a bit memory hungry, but it's fast. Any other offers? Cheers, Liam.

**References**:**Vectorization question***From:*Liam E. Gumley

- Prev by Date:
**Vectorization question** - Next by Date:
**Re: Structure field concatenation** - Prev by thread:
**Vectorization question** - Next by thread:
**Re: Vectorization question** - Index(es):