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

如何将基于原始网格坐标的时序网格数据插值到新网格坐标?

如何将基于原始网格坐标的时序网格数据插值到新网格坐标?

嘿,我来帮你把scipy.interpolate.griddata的用法给掰明白,针对你这个时序网格数据的场景,一步步拆解,保证你能搞清楚坐标和数据该怎么放:

先明确核心变量的对应关系

首先得把你的数据和坐标的形状、对应关系理清楚,这是最容易踩坑的地方:

  • 你的data_flat是(8775, 100)的数组:每一行对应一个时间步,每一列对应原始10x10网格展平后的一个点的数值;
  • 原始坐标x_orig、y_orig:应该是和数据展平顺序完全一致的一维数组(形状(100,)),比如原始10x10网格按行展平,那x_orig和y_orig也要按同样的行优先顺序把每个网格点的坐标列出来;
  • 新坐标x_new、y_new:同理,是新的10x10网格展平后的一维坐标数组(形状(100,)),顺序也要和你期望的新数据输出顺序对应。

把坐标转换成griddata需要的格式

griddata要求原始点和目标点都是(N, 2)的二维数组(每一行是一个点的(x,y)坐标),所以先把你的一维坐标组合起来:

import numpy as np
from scipy.interpolate import griddata

# 假设你已经加载好这些变量:
# data_flat: (8775, 100)
# x_orig, y_orig: (100,) 原始网格展平后的坐标
# x_new, y_new: (100,) 新网格展平后的坐标

# 组合原始坐标点
orig_points = np.column_stack((x_orig, y_orig))
# 组合新坐标点
new_points = np.column_stack((x_new, y_new))

对时序数据做插值(两种方式)

因为你有8775个时间步,有两种处理方式:

方式1:循环遍历每个时间步(直观易懂)

适合刚上手的情况,逻辑清晰:

# 初始化结果数组,形状和原数据一致
interpolated_data = np.zeros_like(data_flat)

for timestep in range(data_flat.shape[0]):
    # 取出当前时间步的所有网格点数值(形状(100,))
    current_values = data_flat[timestep, :]
    # 调用griddata插值,结果是当前时间步新网格的数值(形状(100,))
    interpolated_data[timestep, :] = griddata(orig_points, current_values, new_points, method='linear')

方式2:向量化处理(效率更高)

如果数据量很大,循环会比较慢,可以用向量化的方式一次性处理所有时间步:

# 把data_flat转置成(100, 8775),让每个列对应一个时间步
# griddata会自动对每一列(每个时间步)做插值,结果是(100, 8775)
# 最后再转置回(8775, 100)就是我们要的格式
interpolated_data = griddata(orig_points, data_flat.T, new_points, method='linear').T

关键注意事项

  • 坐标顺序必须严格匹配:x_orig、y_orig的顺序一定要和data_flat每一行的100个数值的顺序完全对应,不然插值结果会完全错乱;
  • 插值方法选择:method参数可以选'linear'(线性插值,默认)、'nearest'(最近邻插值,适合避免NaN)、'cubic'(三次样条插值,更平滑但计算量大);如果新网格的点超出了原始坐标的范围,linear和cubic会返回NaN,nearest会继续外插;
  • 如果新坐标是网格形式(不是展平的):比如你手里的新坐标是x轴的10个值和y轴的10个值,那需要先转换成网格再展平:
    # 假设新坐标是x_new_axis: (10,), y_new_axis: (10,)
    x_new_grid, y_new_grid = np.meshgrid(x_new_axis, y_new_axis)
    # 展平成(100, 2)的坐标数组
    new_points = np.column_stack((x_new_grid.ravel(), y_new_grid.ravel()))
    

备注:内容来源于stack exchange,提问作者mbarnfield63

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:18:03