[Numpy-discussion] Histograms via indirect index arrays

Norbert Nemec Norbert.Nemec.list at gmx.de
Thu Mar 16 08:01:02 EST 2006


I have a very much related problem: Not only that the idea described by
Mads Ipsen does not work, but I could generally find no efficient way to
do a "counting" of elements in an array, as it is needed for a histogram.

The function "histogram" contained in numpy uses a rather inefficient
method, involving the sorting of the data array.

What would instead be needed is a function that simply gives the count
of occurances of given values in a given array:

>>> [4,5,2,3,2,1,4].count([0,1,2,3,4,5])
[0,1,2,1,1,2]

All the solutions that I found so far involve either sorting of the data
or writing a loop in Python, both of which are unacceptable for performance.

Am I missing something obvious?



Mads Ipsen wrote:

>Hey,
>
>First of all, thanks for the new release.
>
>Here's another question regarding something I cannot quite understand:
>
>Suppose you want to update bins for a histogram, you might think you
>could do something like:
>
>  g = zeros(4,Int)
>  x = array([0.2, 0.2])
>  idx = floor(x/0.1).astype(int)
>  g[idx] += 1
>
>Here idx becomes
>
>   array([2, 2])
>
>In this case, I would naively expect g to end up like
>
>  array([0, 0, 2, 0])                     (1)
>
>but instead you get
>
>  array([0, 0, 1, 0])                     (2)
>
>Is this intended? Just being plain novice-like naive, I would expect
>the slice operation g[idx] += 1 to do something like
>
>  for i in range(len(I)):
>    g[ idx[i] ] += 1
>
>resulting in (1) and not (2).
>
>// Mads
>
>
>-------------------------------------------------------
>This SF.Net email is sponsored by xPML, a groundbreaking scripting language
>that extends applications into web and mobile media. Attend the live webcast
>and join the prime developer group breaking into this new coding territory!
>http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
>_______________________________________________
>Numpy-discussion mailing list
>Numpy-discussion at lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>
>
>  
>





More information about the NumPy-Discussion mailing list