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

Python中从UnivariateSpline插值曲线提取指定X的Y值

获取UnivariateSpline插值曲线的任意X对应Y值

你已经完成了x的对数处理和样条拟合,要获取任意指定X对应的插值Y值,直接调用拟合好的spl对象即可,核心注意点是输入的X必须和拟合时的x保持一致的处理方式(即对数转换后的值)。

具体实现步骤

  • 拟合得到spl对象后,直接传入对数处理后的X值(单个或数组),即可得到对应的插值Y值。
  • 如果你的指定值是原始未对数的数值,需要先通过np.log()转换后再传入。

代码示例(基于你的现有代码扩展)

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import UnivariateSpline
from scipy import stats

# 原始数据处理
x = np.log([22.0, 27.0, 35.0, 40.0, 61.0,
            71.0, 84.0, 118.0, 135.0, 175.0,
            223.0, 285.0, 350.0, 444.0, 565.0,
            702.0, 890.0, 1125.0, 1414.0, 1785.0,
            2249.0, 2832.0, 5658.0, 7138.0, 8988.0,
            11323.0, 14273.0, 17983.0, 22652.0])

y = [63.91, 67.88, 55.57,
     82.9, 74.08, 22.27,
     24.57, 18.51, 19.87,
     16.22, 12.78, 10.42,
     9.3, 8.11, 6.55, 5.72,
     5.57, 7.0, 5.05, 5.45,
     13.76, 2.69, 0.8, 0.75,
     0.63, 0.59, 0.61, 0.68, 0.63]   

# 创建权重矩阵
z_score = np.abs(stats.zscore(y))
weight_spl = np.ones(len(x), dtype=int)
for i in range(len(weight_spl)):
    if z_score[i] > 2:
        weight_spl[i] = 0

# 样条拟合
k = 3  # 多项式阶数
spl = UnivariateSpline(x, y, w=weight_spl, s=100, k=k)

# ------------------- 获取指定X对应的Y值 -------------------
# 示例1:单个原始数值(如100),先转对数再传入
original_x = 100
log_x = np.log(original_x)
y_pred = spl(log_x)
print(f"原始值{original_x}对应的插值Y值:{y_pred}")

# 示例2:多个原始数值,批量转换并获取
original_x_list = [50, 200, 500]
log_x_list = np.log(original_x_list)
y_pred_list = spl(log_x_list)
print("批量原始值对应的插值Y值:")
for ox, yp in zip(original_x_list, y_pred_list):
    print(f"原始值{ox}:{yp}")

# 示例3:直接传入对数处理后的X值(如x最小值加1)
specified_log_x = x.min() + 1
y_pred_direct = spl(specified_log_x)
print(f"对数X值{specified_log_x}对应的插值Y值:{y_pred_direct}")

# 保留原有绘图代码
xs = np.linspace(x.min(), x.max(), len(x))
plt.plot(x, y, 'ro', ms=5)
plt.plot(xs, spl(xs), 'cyan', lw=2, alpha=0.3)
plt.show()

关键说明

  • 拟合时使用的是对数转换后的x数组,因此输入的X必须是经过np.log()处理的数值,否则插值结果会完全不符合预期。
  • spl对象支持传入单个数值或numpy数组,可批量获取多个插值结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:10:28