scalanlp/breeze

SparseArray/SparseVector.compact should be split into 2-3 functions

Open

#422 opened on Jul 23, 2015

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Scala (690 forks)batch import
good first issuehelp wanted

Repository metrics

Stars
 (3,453 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

Currently, SparseArray/SparseVector.compact does two separate things which are usually not intended to be done together. It should be split into three functions:

1: Add a def filter(predicate: T => Boolean): Unit function that allows specifying a predicate which is then used to strip certain values from the array/vector without reallocation.

2: Add a function called def tailor(): Unit that cuts down the memory usage to whatever is required to hold the values.

3: For backwards compatibility, replace the function compact with a function that calls filter(x => x == zero.zero) and then tailor().

Contributor guide