On Thu, May 22, 2008 at 9:15 AM, Keith Goodman <[EMAIL PROTECTED]> wrote:
> On Thu, May 22, 2008 at 9:08 AM, Keith Goodman <[EMAIL PROTECTED]> wrote:
>> On Thu, May 22, 2008 at 8:59 AM, Kevin Jacobs <[EMAIL PROTECTED]>
>> <[EMAIL PROTECTED]> wrote:
>>> After poking around for a bit, I was wondering if there was a faster method
>>> for the following:
>>>
>>> # Array of index values 0..n
>>> items = numpy.array([0,3,2,1,4,2],dtype=int)
>>>
>>> # Count the number of occurrences of each index
>>> counts = numpy.zeros(5, dtype=int)
>>> for i in items:
>>>   counts[i] += 1
>>>
>>> In my real code, 'items' contain up to a million values and this loop will
>>> be in a performance critical area of code.  If there is no simple solution,
>>> I can trivially code this using the C-API.
>>
>> How big is n? If it is much smaller than a million then loop over that 
>> instead.
>
> Or how about using a list instead:
>
>>> items = [0,3,2,1,4,2]
>>> uitems = frozenset(items)
>>> count = [items.count(i) for i in uitems]
>>> count
>   [1, 1, 2, 1, 1]

Oh, I see, so uitems should be range(n)
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to