Python - Как выполнить цикл, чтобы добавить группы разных лет в окончательный архив netcdf? - PullRequest
0 голосов
/ 03 апреля 2019

Ежемесячные климатические данные хранятся в файлах netcdf за год.Охватываемый период длится с 2011 по 2018 год (один файл netcdf в год).Мне нужно выполнять над ними разные операции, но сначала я должен разделить их на сезоны: зима и весна.До сих пор мне удалось адаптировать цикл, в котором я применяю операцию в месяц в год и храню результаты в одном файле netcdf.Например, я рассчитываю среднюю температуру с марта по сентябрь 2011 года, и она сохраняется как одна полоса в выходном файле netcdf.То, что мне не удалось сделать, это выполнить это для зимнего сезона, сезон засухи длится с октября по февраль следующего года.

Я проверил похожие вопросы Как выполнить цикл для извлечения определенных переменныхиз файлов NETCDF? но, если честно, я не знал, как применить его к своему коду.Я работаю с python с библиотеками netCDF4, matplotlib и pylab.

Ниже приведен фрагмент моего кода, в котором выполняется цикл.Я сделал несколько аннотаций, чтобы показать свои сомнения.

for year in range(2011, 2019): #period 
    startYear = 2011
    nc_in = "/monthly/TabsM_ch01r.swisscors_" +  str(year) + "01010000_" + str(year) + "12010000.nc" #here is where my 8 netcdf files are placed
    print(nc_in)
    TabsM_SummerList = Dataset(nc_in, 'r') # read the netCDF file

   ###Here is where the mean for each year supposed to be applied 

    #Here I select the bands which I will work with !!! 
    tabsM_912_12 = TabsM_WinterList.variables['TabsM'][9:12 , :, :]  # from September to December starting year.. and from January February next year???

    #Here I apply the mean to my stack of bands
    tabsM_912_12_mean_comp = np.mean(tabsM_912_12, axis=0, keepdims=True)

   # Bio1_mean_var is my new variable that will store the means and it will be used further in my code
     Bio1_mean_var[year-startYear, :, :] = tabsM_912_12_mean_comp 
       # Determine the time value 

#The time stamp is per year... should I modify something here  AND january february next year?? 

    date_format = "%Y-%m-%d"
    startdate = datetime.strptime('2011-01-01', date_format)
    #
    stopdate = datetime.strptime( str(year) + '-12-31' , date_format)
    delta = stopdate - startdate  # (stopdate - startdate)/30
    month = delta.days
    time_var[year-startYear] = month

В конце я ожидаю, что у меня будет один файл nectdf, в котором будет храниться 7 полос.Каждая полоса будет иметь среднее значение температуры для SepDec2011 (начальный год) и JanFeb2012 в следующем году.Следующая группа будет SepDec2012-JanFeb2013 ... и т. Д.

Надеюсь, это объяснение достаточно ясное.Я пытаюсь найти что-то сам, но мне не удалось адаптировать найденное мной к моему коду

Любая подсказка будет высоко оценена.

...