better way to do this in Numeric
Duncan Smith
buzzard at urubu.freeserve.co.uk
Mon Aug 4 14:38:40 EDT 2003
"John Hunter" <jdhunter at ace.bsd.uchicago.edu> wrote in message
news:mailman.1060008547.3901.python-list at python.org...
>
> I have a list of indices and want to assign the number of times an
> index shows up in the list to an array with the count specified at the
> index; ie,
>
> from Numeric import *
>
> a = zeros((10,), Int)
> ind = [1,1,4,4,4,4,7,7,9,9,9,9,9]
>
> for i in ind:
> a[i] += 1
>
> I'm wondering if there is a way to use some combination of Numeric
> array functions to make this speedy.
>
> Thanks,
> John Hunter
>
import Numeric
>>> ind = [1,1,4,4,4,4,7,7,9,9,9,9,9]
>>> res = Numeric.searchsorted(ind, Numeric.arange(10))
>>> res = Numeric.concatenate([res, [len(ind)]])
>>> res[1:] - res[:-1]
array([0, 2, 0, 0, 4, 0, 0, 2, 0, 5])
>>>
Duncan
More information about the Python-list
mailing list