# [Numpy-discussion] Funky vectorisation question

Dan Goodman dg.gmane@thesamovar....
Wed Apr 29 16:49:46 CDT 2009

```David Warde-Farley wrote:
> On 29-Apr-09, at 5:06 PM, Dan Goodman wrote:
>
>> Here's the problem I want to write vectorised code for. I start with
>> an
>> array of indices, say I=array([0,1,0,2,0,1,4]), and I want to come up
>> with an array C that counts how many times each index has been seen so
>> far if you were counting through the array from the beginning to the
>> end, e.g. for that I, C=array([0,0,1,0,2,1,0]). This is easy enough to
>> do with a C loop, but trickier to do just with numpy. Any ideas?
>
>
> In [28]: I = array([0,1,0,2,0,1,4])
>
> In [29]: C = empty(len(I),dtype=int)
>
> In [30]: for idx in unique(I):
>     ....:     V = I == idx
>     ....:     C[V] = arange(len(V))
>     ....:
>
> In [31]: C
> Out[31]: array([0, 0, 1, 0, 2, 1, 0])
>
> David

Thanks David, that's nice but unfortunately that Python loop will kill
me. I'm thinking about some simulation code I'm writing where this
operation will be carried out many, many times, with large arrays I. I
figure I need to keep the Python overheads to a fixed cost to get good
performance.

Dan

```