【问题标题】:Numpy extract subset of grid dataNumpy 提取网格数据的子集
【发布时间】:2014-11-02 21:13:11
【问题描述】:

在我的应用程序中,我有一个从 meshgrid 命令获得的值矩阵及其坐标(经度、纬度)。 我想根据经度和纬度限制提取该矩阵的特定子区域。我已经尝试过这个解决方案,但它不起作用。我需要三个矩阵作为输出,一个用于数据,另外两个用于网格。

Lons, Lats = meshgrid(X, Y)
indexes = np.where((Lons < MLon) & (Lons > mLon) & (Lats < MLat) & (Lats > mLat))
newLons = Lons[indexes]
newLats = Lats[indexes]
newData = Data[indexes]

获得的新值是一维数组而不是矩阵。 我该如何解决这个问题?

【问题讨论】:

    标签: numpy vector scipy


    【解决方案1】:

    np.where 的角度来看,不能保证您将提取构成连续矩形子矩阵的值,因此它会返回平坦的值。你可以重塑它们,但为此你需要弄清楚它们的形状是什么。更好和更通用的解决方案是找到边界框,然后提取它:

    Xspan = np.where((X < MLon) & (X > mLon))[0][[0, -1]]
    Yspan = np.where((Y < MLat) & (Y > mLat))[0][[0, -1]]
    
    # Create a selection
    sel = [slice(Xspan[0], Xspan[1] + 1), slice(Yspan[0], Yspan[1] + 1)]
    
    # Extract
    newLons = Lons[sel]  # == Lons[Xspan[0]:Xspan[1]+1, Yspan[0]:Yspan[1]+1]
    newLats = Lats[sel]
    newData = Data[sel]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-09
      • 2010-12-28
      • 2021-11-03
      • 1970-01-01
      • 2011-04-18
      • 2014-03-02
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多