On Jan 30, 2009, at 1:53 PM, Raik Gruenberg wrote: > Pierre GM wrote: >> On Jan 30, 2009, at 1:11 PM, Raik Gruenberg wrote: >> >>> Mhm, I got this far. But how do I get from here to a single index >>> array >>> >>> [ 4, 5, 6, ... 10, 0, 1, 2, 3, 11, 12, 13, 14 ] ? >> >> np.concatenate([np.arange(aa,bb) for (aa,bb) in zip(a,b)]) > > exactly! Now, the question was, is there a way to do this only using > numpy > functions (sum, repeat, ...), that means without any python "for" > loop?
Can't really see it right now. Make np.arange(max(b)) and take the slices you need ? But you still have to look in 2 arrays to find the beginning and end of slices, so... > Sorry about being so insistent on this one but, in my experience, > eliminating > those for loops makes a huge difference in terms of speed. The zip > is probably > also quite costly on a very large data set. yeah, but it's in a list comprehension, which may make things a tad faster. If you prefer, use itertools.izip instead of zip, but I wonder where the advantage would be. Anyway, are you sure this particular part is your bottleneck ? You know the saying about premature optimization... _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion