avg_idx = np.arange(-win, win + 1) + indices[:, (None)]
avg_val = np.tile(values[:, (None)] / (2 * win + 1), (1, 2 * win + 1))
Эффективно брать скользящее среднее разреженных данных и фильтровать выше порогового значения в python