如何解决将 10 分钟和 30 分钟 NETCDF 时间序列转换为每小时 + 在 Python 中删除 NaN 的函数?
我正在尝试解析 NOAA 浮标 NetCDF 文件,并且根据它们的启动时间,每 10 分钟、30 分钟或每小时记录一次数据。我需要所有这些都在 Python 中始终如一地每小时运行一次。因此,任何少于一个小时的事情都需要取平均值。我已经看到使用 cdo
和 resample
的方法,但我似乎没有多少工作。
我正在处理的 10 分钟 nc 文件示例:https://dods.ndbc.noaa.gov/thredds/fileServer/data/stdmet/41053/41053h9999.nc
我关心的三个变量是wave_height、average_wpd和mean_wave_dir。如果我可以用 9999 之类的数字替换 NaN,我就很好。我需要一个函数,可以将任何时间序列转换并平均为每小时。
解决方法
您可以尝试使用 xarray:
import xarray as xr
ds = xr.open_dataset("./41053h9999.nc")
ds_resampled = ds.resample(time='1H').mean() # or use other methods if you like see: http://xarray.pydata.org/en/stable/generated/xarray.Dataset.resample.html
# remove nans:
ds_resampled = ds_resampled.dropna('time')
,
这似乎在 CDO 中工作正常,如下所示:
cdo hourmean 41053h9999.nc outfile.nc
当我检查时输出看起来不错:
cdo showtime outfile.nc
您说,您尝试过 cdo,但没有奏效。如果您尝试过上述操作,则可能需要检查您的 CDO 版本。
如果你想在python中做到这一点,你可以使用nctoolkit,它有一个调用CDO的方法:
import nctoolkit as nc
ds = nc.open_data("infile.nc")
ds.cdo_command("hourmean")
ds.to_nc("outfile.nc")
,
我使用 xarray
和函数 ds.resample(time="H").mean()
在将 ds
读入后,ds = xr.open_dataset('filename.nc)
是我的命名数据集
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。