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

scipy.interp2d已弃用,如何实现二维网格插值?

替代scipy.interp2d实现二维规则网格插值的简便方案

问题背景

我需要对二维pandas规则网格进行插值,原流程为:提取DataFrame的索引与列作为坐标,将数据转换为numpy数组后,使用scipy.interp2d(x_index,y_index,my2Ddata)定义插值函数,调用f(a,b)获取结果。但scipy.interp2d已弃用,需寻找替代方案。

官方报错提示

对于遗留代码,规则网格可使用RectBivariateSpline替代,散乱二维数据可使用bisplrep/bisplev;新代码中,规则网格建议使用RegularGridInterpolator,散乱数据优先选择LinearNDInterpolator或CloughTocher2DInterpolator。

最优解决方案:使用RegularGridInterpolator

针对规则网格场景,RegularGridInterpolator是官方推荐的新方案,用法简洁且性能更优,完全适配需求,具体步骤如下:

1. 导入依赖模块

import numpy as np
from scipy.interpolate import RegularGridInterpolator
import pandas as pd

2. 处理数据(从pandas转换为numpy)

假设数据存储在df(pandas DataFrame)中:

# 提取x、y方向的坐标(列对应x,索引对应y)
x_coords = df.columns.values  # 一维numpy数组,x轴坐标
y_coords = df.index.values    # 一维numpy数组,y轴坐标
grid_data = df.values         # 二维numpy数组,对应网格上的原始数据

3. 创建插值器

注意坐标顺序与数据数组的轴顺序对应:grid_data的形状为(len(y_coords), len(x_coords)),因此插值器的坐标参数需传入(y_coords, x_coords):

interpolator = RegularGridInterpolator((y_coords, x_coords), grid_data)

4. 执行插值

  • 单个点插值:传入二维数组格式的坐标对(每行一个点),提取结果标量:
# 假设要插值的点为(y=a, x=b)
single_point_result = interpolator(np.array([[a, b]]))[0]
  • 批量点/网格插值:若需生成新的插值网格,可先构造网格点再传入:
# 构造新的x、y坐标数组
x_new = np.linspace(x_coords.min(), x_coords.max(), 100)
y_new = np.linspace(y_coords.min(), y_coords.max(), 100)

# 生成网格点矩阵
y_grid, x_grid = np.meshgrid(y_new, x_new, indexing='ij')
# 转换为插值器要求的点格式(N个点的二维数组)
points = np.stack([y_grid.ravel(), x_grid.ravel()], axis=1)

# 执行插值并重塑为网格形状
interpolated_grid = interpolator(points).reshape(y_grid.shape)

5. 兼容原interp2d调用风格(可选)

如果习惯原interp2d的调用方式,可以封装一个简易函数:

def regular_grid_interp(x, y, data):
    interp = RegularGridInterpolator((y, x), data)
    y_grid, x_grid = np.meshgrid(y, x, indexing='ij')
    points = np.stack([y_grid.ravel(), x_grid.ravel()], axis=1)
    return interp(points).reshape(y_grid.shape)

# 使用方式与原interp2d一致
f = lambda a, b: regular_grid_interp(a, b, grid_data)
# 传入新的x、y坐标数组,得到插值后的二维数组
result = f(x_new, y_new)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:24:56