使用列表从NetCDF4文件中提取数据

问题描述 投票:1回答:2

我正在使用与网格化NetCDF数组的x,y索引相对应的整数列表来提取特定值,初始代码来自here。我的NetCDF文件在单个时间步长上有一个维度,名为TMAX2M。为执行此操作而编写的代码如下(请注意,我没有在脚本顶部显示netCDF4的调用):

# grid point lists
lat = [914]
lon = [2141]

# Open netCDF File
fh = Dataset('/pathtofile/temperaturedataset.nc', mode='r')

# Variable Extraction
point_list = zip(lat,lon)
dataset_list = []
for i, j in point_list:
    dataset_list.append(fh.variables['TMAX2M'][i,j])

print(dataset_list)

代码执行,结果如下:

masked_array(data=73,mask=False,fill_value=999999,dtype=int16]

这里的数据值是正确的,但我希望输出只包含“data”中包含的整数。目标是传递多个x,y点,如上面链接的示例中所示,并将它们连接到单个列表中。

关于如何添加到代码中以使其可实现的任何建议都会很棒。

arrays python-3.x indexing netcdf netcdf4
2个回答
1
投票

在数据集中的单步执行x,y列表中调用特定值的解决方案可以按如下方式完成:

dataset_list = []
for i, j in point_list:
    dataset_list.append(fh.variables['TMAX2M'][:][i,j])

前面链接的示例包含[0,16]的索引变量,[:]可以在这种情况下使用。


0
投票

我建议像这样转换为NumPy数组:

for i, j in point_list:
    dataset_list.append(np.array(fh.variables['TMAX2M'][i,j]))
© www.soinside.com 2019 - 2024. All rights reserved.