docs: def nn(self, x, k = 1, radius = np.inf, eps = 0.0, p = 2):
          """Find the k nearest neighbors of x in the observed input data
          :arg x:      center
          :arg k:      the number of nearest neighbors to return (default: 1)
          :arg eps:    approximate nearest neighbors.
                       the k-th returned value is guaranteed to be no further than
                       (1 + eps) times the distance to the real k-th nearest neighbor.
          :arg p:      Which Minkowski p-norm to use. (default: 2, euclidean)
          :arg radius: the maximum radius (default: +inf)
          :return:     distance and indexes of found nearest neighbors.
          """
          assert len(x) == self.dim, 'dimension of input {} does not match expected dimension {}.'.format(len(x), self.dim)
          k_x = min(k, self.size)
          # Because linear models requires x vector to be extended to [1.0]+x
          # to accomodate a constant, we store them that way.
          return self._nn(np.array(x), k_x, radius = radius, eps = eps, p = p)