python - np.polynomial.polynomial.polyfit 似乎不适合 Python 中的数据
问题描述
我正在尝试对 373 个数据点进行简单的线性拟合,但 polyfit 似乎失败了,我不知道为什么。
x = np.reshape(air_sst_new[:,90,180],(373))
y = np.reshape(olr_new[:,90,180],(373))
z = np.polynomial.polynomial.polyfit(x,y,1)
plt.figure()
plt.plot(x,y, '.')
xx = np.linspace(np.min(x),np.max(x))
yy = np.polynomial.polynomial.polyval(xx, z)
plt.plot(xx, yy)
上面编写的代码在使用令人沮丧的随机生成的点时有效。
example_x = np.random.rand(373,180,360)
example_y = np.random.rand(373,180,360)
x = np.reshape(example_x[:,90,180], (373))
y = np.reshape(example_y[:,90,180], (373))
z = np.polynomial.polynomial.polyfit(x,y,1)
plt.figure()
plt.plot(x,y, '.')
xx = np.linspace(np.min(x), np.max(x))
yy = np.polynomial.polynomial.polyval(xx, z)
plt.plot(xx, yy)
解决方案
问题在于您的polyval
. z
是您的线性拟合系数数组,并且xx
是用于绘制拟合的细化网格。
您使用过:
z = np.polynomial.polynomial.polyfit(x,y,1)
yy = np.polynomial.polynomial.polyval(xx, z)
你应该使用:
z = np.polyfit(x,y,1)
yy = np.polyval(z, xx)
更多详细信息,请参阅此处的官方文档。
推荐阅读
- xml - XPTY0004:不允许将多个项目的序列作为 string-length() 的第一个参数
- python - python - 在列中读取具有多种语言的 .csv
- azure - Docker 任务:如何从构建/发布变量设置 Azure 容器注册表名称或 ID?
- python - Python:通过向所有元素添加字符串来更新列表
- sql - NodeJS + Express“错误:-2006,\,无法绑定参数”
- php - 我的路由组是否适用于需要正确编写管理员角色的路由?
- node.js - nodejs的链接文件地址的唯一GET()方法
- python - .py python 文件显示代码而不是在 webhost 上执行
- ansible - 在 playbook with_items 中运行所有任务
- azure-active-directory - 谷歌套件与 Azure Active Directory 的集成