Извлечение данных из набора данных OpenDAP для многомерных переменных

Я создаю API, который будет извлекать данные из океана набор данных

Я использую модуль Python netCDF4 для работы с этими данными. Имеется многомерная переменная vozocrtx с входными параметрами time_counter, deptht, y, x.

Согласно документации, если я хочу извлечь данные из набора данных для этой конкретной переменной, я могу сделать

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]

Причина, по которой я хочу это сделать, состоит в том, чтобы создать общую функцию, которая будет извлекать данные на основе ввода (начало, конец и шаг) * нет. размеров.

Я попробовал несколько вещей, а также прочитал документ, но не нашел ничего полезного. Любой намек или направление будут оценены.


person Afsan Abdulali Gujarati    schedule 15.06.2018    source источник


Ответы (1)


#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]

Благодаря вопросам Как я могу создать объект фрагмента для Numpy массив? и Сохранить индекс массива Numpy в переменной. решение моей проблемы.

person Afsan Abdulali Gujarati    schedule 15.06.2018