Re: Efficient Histogram Algorithm?

*To*: mathgroup at smc.vnet.net*Subject*: [mg113142] Re: Efficient Histogram Algorithm?*From*: Julian Francis <julian.w.francis at gmail.com>*Date*: Fri, 15 Oct 2010 13:50:41 -0400 (EDT)*References*: <i9276l$3fg$1@smc.vnet.net>

Have gone with jhistogram3: jhistogram3[list_] := Sort[Tally[Join[Range[0, 255], list]]][[All, 2]] - 1 In[96]:= Timing[hist3 = jhistogram3[randomList];][[1]] Out[96]= 0.015 In[98]:= tallybased = With[{tallies = Tally[randomList]}, Split[Sort[ Join[tallies, Transpose[{Range[0, 255], ConstantArray[0, 256]}]]], #[[1]] == #2[[1]] &][[All, -1, -1]]]; // Timing Out[98]= {0.016, Null} It is based on Bob's solution, but incorporates (insight from Darren) a fix where if there were missing values in the random array, it wouldn't have returned a value (of 0) for that. The Range ensures that all values in the histogram will return, then I subtract one from each of the histogram buckets to compensate for the fact that I put an extra one in in the first place. They perform pretty similarly, I just find the first one easier for me to understand. Thanks all. Julian.