从OpenDAP数据集中提取数据以获取多维变量

时间:2018-06-15 15:54:38

标签: python python-3.x multidimensional-array netcdf4 opendap

我正在创建一个从ocean dataset

中提取数据的API

我正在使用netCDF4 python模块来处理这些数据。 存在具有输入参数time_counter,deptht,y,x的多维变量vozocrtx。

根据文档,如果我想从数据集中提取此特定变量的数据,我可以

import netCDF4
url = 'http://navigator.oceansdata.ca/thredds/dodsC/giops/daily/201806/giops_2018061300_024.nc'
dataset = netCDF4.Dataset(url)
variable = dataset.variables['vozocrtx']
extracted_data = variable[0:1:1,0:50:1,0:10:1,0:10:1]

但是,我想要的是拥有一个包含提取和切片索引的变量,比如

data_indexes = 0:1:1,0:50:1,0:10:1,0:10:1
extracted_data = variable[data_indexes]

我想要做的是创建一个通用函数,它将根据输入(start,end和stride)* no提取数据。尺寸。

我尝试了一些内容并阅读了该文档,但无法找到任何有用的信息。任何提示或方向将不胜感激。

1 个答案:

答案 0 :(得分:0)

#Step 1 - create a list of all the slices

list = []
list.append(np.s_[0:1:1])
list.append(np.s_[0:50:1])
list.append(np.s_[0:10:1])
list.append(np.s_[0:10:1])    

#Step 2 - convert the list to a tuple
tuple_slice = tuple(list)    

#Step 3 - use the tuple as the index input to extract the data
variable[tuple_slice]

感谢问题How can I create a slice object for Numpy array?Store Numpy array index in variable我找到了解决问题的方法。