You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python基于numpy拟合趋势线如何获取指定区间的外推值列表

解决方法

你已经通过np.polyfit得到了一阶拟合多项式对象f,它本身支持向量化计算,直接传入你需要的区间内的x值序列,就能批量得到对应外推结果。

操作步骤如下:

  • 第一步:生成指定区间的x值序列
    如果你需要x从1000到1050、步长为1的整数序列,用np.arange即可,注意np.arange是左闭右开区间,所以结束值要设为1051才能包含1050:
    x_extrap = np.arange(1000, 1051, step=1)
    
    如果需要自定义采样点数(比如1000到1050之间取20个均匀分布的点),可以用np.linspace:
    x_extrap = np.linspace(1000, 1050, num=20)
    
  • 第二步:计算对应外推y值
    直接把生成的x序列传给f,就能得到numpy数组格式的外推结果:
    y_extrap_array = f(x_extrap)
    
    如果需要转成Python原生列表供后续操作,调用tolist()方法即可:
    y_extrap_list = y_extrap_array.tolist()
    

完整修改后代码示例:

import numpy as np
import matplotlib.pyplot as plt

y = np.array([13.6700,14.4900])
x = np.array([992,1000])

# 拟合一阶多项式
p = np.polyfit(x, y, 1)
f = np.poly1d(p)

# ========== 获取1000到1050的外推值 ==========
# 生成1000~1050步长为1的x序列
x_extrap = np.arange(1000, 1051, step=1)
# 计算对应外推y值(numpy数组格式)
y_extrap_array = f(x_extrap)
# 转成Python原生列表
y_extrap_list = y_extrap_array.tolist()

# 可打印查看结果
print("外推x序列:", x_extrap)
print("外推y值(数组):", y_extrap_array)
print("外推y值(列表):", y_extrap_list)

# 原有绘图逻辑
x2=np.array([1001,1010])
plt.plot(x, y, 'bo', label="Data")
plt.plot(x,f(x), 'r:',label="Polyfit")
plt.plot(x2,f(x2), 'b-',label="Polyfit")
plt.legend()
plt.show()

如果你的x区间不需要连续采样,而是指定几个离散的x值,直接把这些值放到numpy数组里传给f即可,比如f(np.array([1000, 1020, 1050]))就会直接返回这三个点对应的外推值。

内容的提问来源于stack exchange,提问作者Dave Richards

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:06:05