<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def do_kernel(x0, x, l=1.0, kernel=epanechnikov):
 """ Calculate a kernel function on x in the neighborhood of x0 Parameters x: float array All values of x x0: float The value of x around which we evaluate the kernel l: float or float array (with shape = x.shape) Width parameter (metric window size) """

    # xx is the norm of x-x0. Note that we broadcast on the second axis for the
    # nd case and then sum on the first to get the norm in each value of x:
    xx = np.sum(np.sqrt(np.power(x-x0[:,np.newaxis], 2)), 0)
    idx = np.where(np.abs(xx<=1))
    return kernel(xx,idx)/l