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

时间:2018-09-17 17:03:05

标签: arrays python-3.x indexing netcdf netcdf4

我正在使用与网格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]

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

任何有关将什么添加到代码中以实现此目标的建议都是很好的。

2 个答案:

答案 0 :(得分:1)

可以按照以下步骤在数据集的单个步骤中从x,y列表中调用特定值的解决方案:

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

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

答案 1 :(得分:0)

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

|---------------------|------------------|------------------|
|     special_price   |     price        |   product_id     |
|---------------------|------------------|------------------|
|          550.0      |       699.95     |      1           |
|---------------------|------------------|------------------|
|          0.0        |       260.0      |      2           |
|---------------------|------------------|------------------|
|          250.0      |      332.66      |      3           |
|---------------------|------------------|------------------|