繁体   English   中英

在Python中更改数据分辨率

[英]Changing data resolution in Python

我有一组数据(存储在2D numpy数组中)代表同一问题的模拟。 但是,每个模拟都来自不同的模型,这会导致每个模型的分辨率不同。 例如,这些是模拟的一些尺寸:

  1. 1159 x 1367
  2. 144 x 157
  3. 72 x 82
  4. 446 x 500
  5. 135 x 151

我想做的是将它们全部转换为相同的分辨率,例如,144 x 157.我相信我必须执行插值,但是,我不确定在Python中使用哪种方法。

我一直在读这些:

  1. scipy.interpolate.griddata
  2. scipy.ndimage.interpolation.zoom.html
  3. scipy.interpolate.RegularGridInterpolator.html
  4. scipy.ndimage.interpolation.map_coordinates.html

(3)和(4)似乎最适合这个问题,但是,我不确定如何使它们返回具有指定分辨率的新网格(2D)数据。

事实证明,我可以使用scipy.interpolate.RegularGridInterpolator.html解决它:

import numpy as np
import pylab as plt

from scipy.interpolate import RegularGridInterpolator

def regrid(data, out_x, out_y):
    m = max(data.shape[0], data.shape[1])
    y = np.linspace(0, 1.0/m, data.shape[0])
    x = np.linspace(0, 1.0/m, data.shape[1])
    interpolating_function = RegularGridInterpolator((y, x), data)

    yv, xv = np.meshgrid(np.linspace(0, 1.0/m, out_y), np.linspace(0, 1.0/m, out_x))

    return interpolating_function((xv, yv))

输入:

在此输入图像描述

输出:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM