import numpy as np def reflective_kde(x_data: np.ndarray, x_prediction: np.ndarray) -> np.ndarray: h = silverman_bandwidth(x_data) # Compute before adding reflected data x_data_augmented = np.stack((-x_data, x_data, 2-x_data)) reflective_densities = basic_kde(x_data_augmented, x_prediction, h) # Discard left and right reflected samples and normalize density by 1/3 return 3 * reflective_densities