当前位置: 首页 > 知识库问答 >
问题:

如何通过特定变量值从netcdf文件中选择数据?

公羊招
2023-03-14

我正在搜索一个选项,以特定的变量值从NetCDF文件中选择数据。数据集包含时间、纬度和经度坐标以及一系列变量。其中一个变量是带有陆地/公海/海冰/湖泊特定值的掩码。由于公海由ds.mask=1表示,我只想提取位于mask=1的坐标(时间和空间)处的海面温度值。但是,我不想将其他坐标处的海水温度值设置为NaN,而是只保留ds.mask=1的那些坐标和变量值。我知道如何使用xarray进行选择和数据处理。然而,sel/isel只适用于按坐标选择,而不是按变量值选择。任何帮助都将不胜感激。

lati = stormtrack_lat.values
loni = stormtrack_lon.values
timei = stormtrack_datetime.values
tmax = timei.max() + np.timedelta64(10,'D')
tmin = timei.min() - np.timedelta64(10,'D')
SSTskin_subfile = SSTskin_file.sel(time=slice(tmin, tmax))

#HERE I NEED HELP:
#extract data where mask = ocean (1) and use only these data points and keep these only!
SSTskin_subfile_masked = SSTskin_subfile.sel(SSTskin_subfile.mask == 1) #does not work yet (Thrown error: ValueError: the first argument to .isel must be a dictionary)

这是NetCDF文件的结构:

共有1个答案

向实
2023-03-14

您可以使用 .where 应用 海洋遮罩:

SSTskin_subfile_masked = SSTskin_subfile.where(SSTskin_subfile.mask)

不可能删除所有掩蔽点,因为数据是网格的。例如,如果您在给定纬度只有一个定义值,则必须保留所有值。但是,您可以使用以下方式删除所有值均为NaN的坐标:

SSTskin_subfile_masked.dropna(dim = ['lat', 'lon'], how = 'all')
 类似资料:
  • 我试图从一个基于变量的netCDF文件中提取天气数据。的。nc文件包含14个变量和2个尺寸。我想提取与第一个变量a的值相关的14个变量的所有数据。数据来自荷兰计量研究所,可以在这里找到。 使用netCDF4模块在Python中加载数据,如下所示: 印刷变量和尺寸: 我想提取特定“站”的数据并将其放入熊猫数据帧中以执行一些计算。 我尝试了这样的东西来提取数据,但我知道这不是 netCDF 文件的工作

  • 结果我只想要abc,xyz,jkl。 相同的正则表达式或代码是什么...?

  • 嗨,我想从特定文件夹中获取图像。现在我使用此代码: 现在,有了这个uri,我看到了最近的,我必须手动打开文件夹。我尝试设置uri。用我的文件夹路径解析输入,但我还是得到了我最近的。如何自动打开文件夹?

  • 问题: 我在R中有一个代码,可以从单个Aqua Modis网络CDF文件中提取每月海面温度(SST)值(见下文)。但是,我在一个文件夹中有一批 59 个 Aqua Modis netCDF 文件。 目的: 我的目标是从所有59个netCDF文件的每个netCDF中提取变量的经度、纬度和SST,使用函数stack::raster()将它们转换为光栅文件,然后处理这些文件。 我的数据框有 650 行,

  • 我有一个包含26个变量的netCDF文件(例如“file.nc”)。每个网格上有500个时间片(y=333,x=386)。 使用通用映射工具(GMT),我想首先创建一个新的netCDF文件,其中包含1个变量(例如“temp”),同时保留变量的时间、x和y维度。 然后,我想提取网格上特定点随时间推移的变量值。 我应该使用什么工具,如何提取这些数据? 谢谢

  • 问题内容: 我需要一种更改CSV文件列的特定值的方法。例如,我有这个CSV文件: 并且我需要将“ 127.0.0.2”行的值23更改为30。 我使用csv库: 问题答案: 这是打开csv文件,更改内存中的值然后将所做的更改写回到磁盘的解决方案。 行内容: 修改值: 行内容: 现在我们只需要将其写回到文件中