【问题标题】:Is there a simple way of getting an xyz array from xarray dataset?有没有从 xarray 数据集中获取 xyz 数组的简单方法?
【发布时间】:2021-08-26 20:34:14
【问题描述】:

有没有一种简单的方法可以从 xarray 数据集中获取 xyz 值数组(即 3 cols 和 nrows = 像素数的数组)?类似于我们从 R 中的 rasterToPoints 函数中得到的东西。

我正在打开一个 netcdf 文件,其中包含某个变量 (chl) 的值。我无法直接在此处添加图像,但这是输出的屏幕截图:

Xarray dataset structure

我需要以具有这种结构的数组结尾:

[[lon1, lat1, val],
 [lon1, lat2, val]]

以此类推,获取每个点的 lon/lat 组合。如果我遗漏了一些非常明显的东西,我很抱歉,但我是 Python 新手。

【问题讨论】:

    标签: python python-xarray


    【解决方案1】:

    您可能在这里寻找的自然格式是 pandas 数据框,其中 lon、lat 和 chl 是列。这可以使用 xarray 的to_dataframe 方法轻松创建,如下所示。

    import xarray as xr
    ds = xr.open_dataset("infile.nc")
    df = (
         ds
         .to_dataframe()
         .reset_index()
         )
    

    【讨论】:

      【解决方案2】:

      我可以建议你一个小的伪代码:

      import numpy as np
      lons = ds.variables['lon'].load()
      lats = ds.variables['lat'].load()
      chl = ds.variables['chl'].load()
      xm,ym = np.meshgrid(lons,lats)
      dataout = np.concatenate((xm.flatten()[np.newaxis,:],ym.flatten()[np.newaxis,:],chla.flatten()[np.newaxis,:]),axis=0) 
      

      可能它不能开箱即用,但至少有一种解决方案可能与此类似。

      【讨论】:

        猜你喜欢
        • 2021-03-16
        • 1970-01-01
        • 2020-07-12
        • 2018-02-27
        • 1970-01-01
        • 2021-10-04
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多