auto vector_of_kll_sketches::get_indices()

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;
}