如何解决有没有一种从 xarray 数据集中获取 xyz 数组的简单方法?
是否有一种简单的方法可以从 xarray 数据集中获取 xyz 值数组(即 3 个列和 nrows = 像素数的数组)?类似于我们从 R 中的 rasterToPoints 函数得到的东西。
我正在打开一个 netcdf 文件,其中包含某个变量 (chl) 的值。我无法直接在此处添加图像,但这是输出的屏幕截图:
我需要以具有此结构的数组结尾:
[[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()
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。