fit a curve
scipy.interpolate.splprep
# python - Interpolating a closed curve using scipy - Stack Overflow # https://stackoverflow.com/questions/33962717/interpolating-a-closed-curve-using-scipy import numpy as np from scipy import interpolate from matplotlib import pyplot as plt x = np.array([23, 24, 24, 25, 25]) y = np.array([13, 12, 13, 12, 13]) # append the starting x,y coordinates x = np.r_[x, x[0]] y = np.r_[y, y[0]] # fit splines to x=f(u) and y=g(u), treating both as periodic. also note that s=0 # is needed in order to force the spline fit to pass through all the input points. tck, u = interpolate.splprep([x, y], s=0, per=True) # evaluate the spline fits for 1000 evenly spaced distance values xi, yi = interpolate.splev(np.linspace(0, 1, 1000), tck) # plot the result fig, ax = plt.subplots(1, 1) ax.plot(x, y, 'or') ax.plot(xi, yi, '-b')
numpy.polyfit
ref:
numpy.polyfit — NumPy v1.14 Manual
https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.polyfit.html
minimizing the sum of the squared residuals
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # @Time : 8/20/2018 11:36 PM # @Author : yusisc (yusisc@gmail.com) # scipy.optimize.curve_fit — SciPy v0.19.0 Reference Guide # https://docs.scipy.org/doc/scipy-0.19.0/reference/generated/scipy.optimize.curve_fit.html import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit def func(x, a, b, c): return a * np.exp(-b * x) + c # define the data to be fit with some noise np.random.seed(1) xdata = np.linspace(0, 4, 50) y = func(xdata, 2.5, 1.3, 0.5) y_noise = 0.2 * np.random.normal(size=xdata.size) ydata = y + y_noise plt.plot(xdata, ydata, 'b-', label='data') # Fit for the parameters a, b, c of the function func popt, pcov = curve_fit(func, xdata, ydata) plt.plot(xdata, func(xdata, *popt), 'r-', label='fit') # Constrain the optimization to the region of 0 < a < 3, 0 < b < 2 and 0 < c < 1: popt, pcov = curve_fit(func, xdata, ydata, bounds=(0, [3., 2., 1.])) plt.plot(xdata, func(xdata, *popt), 'g--', label='fit-with-bounds') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.show()
More
Fitting data — SciPy Cookbook documentation
https://scipy-cookbook.readthedocs.io/items/FittingData.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具