code: def epanechnikov(xx, idx=None):
              
      ans = np.zeros(xx.shape)
      ans[idx] = 0.75 * (1-xx[idx]**2)
      return ans
docs: The Epanechnikov kernel estimated for xx values at indices idx (zero
      elsewhere) 
  
      Parameters
      ----------
      xx: float array
          Values of the function on which the kernel is computed. Typically,
          these are Euclidean distances from some point x0 (see do_kernel)
  
      idx: tuple
          An indexing tuple pointing to the coordinates in xx for which the
          kernel value is estimated. Default: None (all points are used!)  
  
      Notes
      -----
      This is equation 6.4 in FHT chapter 6