49 const std::size_t num_dimensions,
50 const Index_ num_observations,
51 Cluster_*
const clusters,
52 const Cluster_ num_centers,
53 Float_*
const centers,
54 std::vector<Index_>& sizes
56 bool has_zero =
false;
57 for (Cluster_ c = 0; c < num_centers; ++c) {
67 auto remapping = sanisizer::create<std::vector<Index_> >(num_centers);
68 Cluster_ remaining = 0;
69 for (Cluster_ c = 0; c < num_centers; ++c) {
71 remapping[c] = remaining;
74 centers + sanisizer::product_unsafe<std::size_t>(c, num_dimensions),
76 centers + sanisizer::product_unsafe<std::size_t>(remaining, num_dimensions)
78 sizes[remaining] = sizes[c];
85 std::fill(sizes.begin() + remaining, sizes.end(), 0);
87 centers + sanisizer::product_unsafe<std::size_t>(remaining, num_dimensions),
88 centers + sanisizer::product_unsafe<std::size_t>(num_centers, num_dimensions),
92 for (Index_ o = 0; o < num_observations; ++o) {
93 clusters[o] = remapping[clusters[o]];
Cluster_ remove_unused_centers(const std::size_t num_dimensions, const Index_ num_observations, Cluster_ *const clusters, const Cluster_ num_centers, Float_ *const centers, std::vector< Index_ > &sizes)
Definition remove_unused_centers.hpp:48