On 10/25/06, ara.t.howard / noaa.gov <ara.t.howard / noaa.gov> wrote: > On Thu, 26 Oct 2006 poopdeville / gmail.com wrote: > > > Hi everybody, > > > > I'm writing a fairly open-ended question. I'm hoping for suggestions, > > opinions, advice. Suppose I have n arrays, each of which has m entries. m > > is a fairly large integer, on the order of 10,000. Each entry is either 1 > > or 0. > > > > The first task I need to accomplish is figuring out how many times a 1 > > occurs in the ith entry in an array. So for concreteness, if I had arrays: > > > > first = [1,0,0,0,0] > > second = [1,1,0,0,0] > > third = [0,0,0,1,0] > > > > I would end up with > > count = [2,1,0,1,0] > > harp:~ > cat a.rb > require 'narray' > > first = NArray.to_na [1,0,0,0,0] > second = NArray.to_na [1,1,0,0,0] > third = NArray.to_na [0,0,0,1,0] > > count = first.eq(1) + second.eq(1) + third.eq(1) > > p count > > > harp:~ > ruby a.rb > NArray.byte(5): > [ 2, 1, 0, 1, 0 ] > > > > I'm just trying to give the general flavor of what I'm working on. I know I > > can use some simple each_with_index loops to increment count[index] > > (something along the lines of:) > > > > count = Array.new(m,0) > > [first, second, third].each do |array| > > array.each_with_index do |item, index| > > count[index] += item > > end > > end > > > > There are going to be m * 3n * (two constant multipliers for the > > looping) object allocations and method calls. m is fairly large, and I > > have other, similar, tasks to accomplish with this data. The faster I > > can process this data, the more data I can process in a given amount of > > time, and the more accurate the analysis will be. > > i use narray on huge (> 1gb) datasets all the time. it's blindingly fast. > > What's it going to take to get this into the stdlib? It is awesome.