genbattle / dkm

A generic C++11 k-means clustering implementation
MIT License
209 stars 47 forks source link

Implement N-dimensional array class to replace `std::vector<std::array<T, N>>` #12

Open genbattle opened 5 years ago

genbattle commented 5 years ago

Issues (#8 and #11) have been raised about the flexibility of the current std::vector<std::array<T, N>> pattern used for passing data matrices in and out of this library.

A more flexible alternative is to have a dedicated N-dimensional array class (dkm::ndarray<T>) which has convenient constructors that take both the existing std::vector<std::array<T, N>> and std::vector<std::vector<T>>, which has been requested for some use cases. This class would also have methods to explicitly convert back to these data types after running the kmeans algorithm.

ankane commented 4 years ago

Thanks for the great library! fwiw, I created Ruby bindings for it but want to wait until there's a way to specify dimensions at runtime before releasing it.

genbattle commented 4 years ago

Hey, thanks for your interest in this library.

This is the next improvement on my TODO list, so as soon as I have some time I'll start refactoring towards this goal.