Method: DDescriptive#split

Defined in:
lib/colt/double_descriptive.rb

#split(splitters) ⇒ Object


Splits (partitions) a list into sublists such that each sublist contains the elements with a given range. splitters= (a,b,c,…,y,z) defines the ranges [-inf,a), [a,b), [b,c), …, [y,z), [z,inf]. Examples:

data = (1,2,3,4,5,8,8,8,10,11). 
splitters=(2,8) yields 3 bins: (1), (2,3,4,5) (8,8,8,10,11). 
splitters=() yields 1 bin: (1,2,3,4,5,8,8,8,10,11). 
splitters=(-5) yields 2 bins: (), (1,2,3,4,5,8,8,8,10,11). 
splitters=(100) yields 2 bins: (1,2,3,4,5,8,8,8,10,11), ().

Returns:

  • the sublists (an array with length == splitters.size() + 1. Each sublist is returned sorted ascending.



441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# File 'lib/colt/double_descriptive.rb', line 441

def split(splitters)

  split = Java::CernColtListTdouble::DoubleArrayList.new(splitters.to_java(Java::double))
  res = DoubleDescriptive.split(sorted_data, split)
  lists = res.to_a
  bins = Array.new

  lists.each do |list|
    list.trimToSize()
    bins << list.elements().to_a
  end
  
  bins

end