有没有一种从 xarray 数据集中获取 xyz 数组的简单方法?

时间:2021-06-09 19:55:50

标签: python python-xarray

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

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

Xarray dataset structure

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

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

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

2 个答案:

答案 0 :(得分:0)

我可以给你推荐一个小的伪代码:

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) 

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

答案 1 :(得分:0)

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

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