def optimum_interpolation(domain,init_results,n=101): """ Using interpolation """ low,high = domain.min(),domain.max() ip_interpolated = np.linspace(low, high, num=n, endpoint=True) f3 = interp1d(domain, init_results, kind='cubic') results_interpolated=np.array(f3(ip_interpolated)) imax = np.argmax(results_interpolated) return (ip_interpolated[imax])