in src/vector_of_kll.cpp [216:244]
auto vector_of_kll_sketches<T, C>::get_indices(Array1D<int>& isk) const -> Array1D<uint32_t> {
auto input = isk.view<nb::ndim<1>>();
size_t num_input = input.shape(0);
Array1D<uint32_t> output;
if (num_input == 1) {
if (input(0) == -1) {
output = make_ndarray<uint32_t>(d_);
for (uint32_t i = 0; i < d_; ++i) {
output(i) = i;
}
} else {
output = make_ndarray<uint32_t>(1);
output(0) = static_cast<uint32_t>(input(0));
}
} else {
output = make_ndarray<uint32_t>(num_input);
for (uint32_t i = 0; i < num_input; ++i) {
const uint32_t idx = static_cast<uint32_t>(input(i));
if (idx < d_) {
output(i) = idx;
} else {
throw std::invalid_argument("request for invalid dimensions >= d ("
+ std::to_string(d_) +"): "+ std::to_string(idx));
}
}
}
return output;
}