有没有一种从 xarray 数据集中获取 xyz 数组的简单方法?
Is there a simple way of getting an xyz array from xarray dataset?
是否有一种从 xarray 数据集中获取 xyz 值数组(即 3 列和 nrows = 像素数的数组)的简单方法?类似于我们从 R 中的 rasterToPoints 函数得到的东西。
我正在打开一个包含特定变量 (chl) 值的 netcdf 文件。我无法在此处直接添加图像,但这是输出的屏幕截图:
Xarray dataset structure
我需要以具有以下结构的数组结尾:
[[lon1, lat1, val],
[lon1, lat2, val]]
以此类推,得到每个点的组合lon/lat。如果我遗漏了一些非常明显的东西,我很抱歉,但我是 Python.
的新手
我可以建议你一个小的伪代码:
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)
可能它不是开箱即用的,但至少有一个解决方案与此类似。
您在这里寻找的自然格式可能是 pandas 数据框,其中 lon、lat 和 chl 是列。这可以使用 xarray 的 to_dataframe
方法轻松创建,如下所示。
import xarray as xr
ds = xr.open_dataset("infile.nc")
df = (
ds
.to_dataframe()
.reset_index()
)
是否有一种从 xarray 数据集中获取 xyz 值数组(即 3 列和 nrows = 像素数的数组)的简单方法?类似于我们从 R 中的 rasterToPoints 函数得到的东西。
我正在打开一个包含特定变量 (chl) 值的 netcdf 文件。我无法在此处直接添加图像,但这是输出的屏幕截图:
Xarray dataset structure
我需要以具有以下结构的数组结尾:
[[lon1, lat1, val],
[lon1, lat2, val]]
以此类推,得到每个点的组合lon/lat。如果我遗漏了一些非常明显的东西,我很抱歉,但我是 Python.
的新手我可以建议你一个小的伪代码:
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)
可能它不是开箱即用的,但至少有一个解决方案与此类似。
您在这里寻找的自然格式可能是 pandas 数据框,其中 lon、lat 和 chl 是列。这可以使用 xarray 的 to_dataframe
方法轻松创建,如下所示。
import xarray as xr
ds = xr.open_dataset("infile.nc")
df = (
ds
.to_dataframe()
.reset_index()
)