Ежемесячные климатические данные хранятся в файлах 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 ... и т. Д.
Надеюсь, это объяснение достаточно ясное.Я пытаюсь найти что-то сам, но мне не удалось адаптировать найденное мной к моему коду
Любая подсказка будет высоко оценена.