# Class: Array

Inherits:
Object
• Object
show all
Defined in:
lib/nyaplot/monkeys.rb

## Instance Method Summary collapse

• Find the numeric mean.

• Find the single median or the mean of medians.

• Note: Not guaranteed to be the fastest way to find the modes, but I didn't see this function as a bottleneck worth a ton of effort.

## Instance Method Details

### #mean ⇒ Object

Find the numeric mean. nils are ignored.

 ``` 3 4 5 6 7 8 9 10``` ```# File 'lib/nyaplot/monkeys.rb', line 3 def mean ary = self.to_a.compact if defined?(NMatrix) # Prefer the C version. ary.to_nm.mean[0] else # Fall back to Ruby. ary.inject(0) { |x,i| x + i } / ary.size.to_f end end```

### #median ⇒ Object

Find the single median or the mean of medians. nils are ignored.

 ``` 14 15 16 17 18 19 20 21 22 23``` ```# File 'lib/nyaplot/monkeys.rb', line 14 def median ary = self.to_a.compact.sort.uniq return nil if ary.empty? if ary.size % 2 == 1 # Even number of entries ary[(ary.size-1) / 2] else # Odd number of entries idx = (ary.size-1) / 2 (ary[idx] + ary[idx+1]) / 2.0 end end```

### #modes ⇒ Object

Note: Not guaranteed to be the fastest way to find the modes, but I didn't see this function as a bottleneck worth a ton of effort. –JW

 ``` 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52``` ```# File 'lib/nyaplot/monkeys.rb', line 28 def modes ary = self.sort.compact return nil if ary.empty? h = {} ary.each do |k| if h.has_key?(k) h[k] += 1 else h[k] = 1 end end return nil if h.keys.empty? max_key = h.keys.first h.each_pair do |k,count| next if count.nil? || h[max_key].nil? max_key = k if count > h[max_key] end mode_count = h[max_key] h.select { |k,v| v == mode_count }.keys.sort end```