Я довольно новичок в Python, и я пытаюсь рассчитать минимальную, среднюю и максимальную ежемесячную температуру по ежедневным данным за февраль. < /p>
У меня немного неприятностей Применение моего кода с других месяцев до февраля. < /p>
Вот мой код за 31 день: < /p>
Cell In[7], line 38
var_arr[29*ind_time:29*(ind_time+1),:,:,:] = subset_thetao2.data
ValueError: could not broadcast input array from shape (29,1,1,2) into shape (21,1,1,2)
Кто-то сказал мне, что учитываемые данные могут остановиться на году-02-28 T:00:00:00 (для 28-дневных лет) и году-02-29 T: 00:00:00 (для 29-дневных лет) и что код не учитывает последний день. Итак, я попытался расширить end_rangedate до 03-01 года, но получил следующее:
Cell In[8], line 33
var_arr[28*ind_time:28*(ind_time+1),:,:,:] = subset_thetao1.data
ValueError: could not broadcast input array from shape (29,1,1,2) into shape (28,1,1,2)
Может ли кто -нибудь объяснить мне, что я делаю не так?
Я довольно новичок в Python, и я пытаюсь рассчитать минимальную, среднюю и максимальную ежемесячную температуру по ежедневным данным за февраль. < /p> У меня немного неприятностей Применение моего кода с других месяцев до февраля. < /p> Вот мой код за 31 день: < /p> [code]import xarray as xr import numpy as np import copernicusmarine
# (8 x 28) + (3 x 29) = 311 [/code] Это работает, но значения кажутся мне неправильными. Результат: [code]minimum : 0.0 mean : 10.118808567523956 maximum :6.510576634161725 [/code] Я пробовал использовать один ind_time. [code]DS = copernicusmarine.open_dataset(dataset_id="cmems_mod_glo_phy_my_0.083deg_P1D-m", minimum_longitude = -1.68, maximum_longitude = -1.56, minimum_latitude = 49.63, maximum_latitude = 49.67, minimum_depth = 0, maximum_depth = 0) years_feb_28 = [2010,2011,2013,2014,2015,2017,2018,2019] years_feb_29 = [2012,2016,2020] var_arr = np.zeros((311,len(DS['depth']),len(DS['latitude']),len(DS['longitude'])))
ind_time = -1 for y in range(2010,2021): print(y) start_rangedate = "%s"%y+"-02-01" if y in years_feb_28: ind_time += 1 end_rangedate = "%s"%y+"-02-28" subset_thetao1 = DS.thetao.sel(time = slice(start_rangedate, end_rangedate)) var_arr[28*ind_time:28*(ind_time+1),:,:,:] = subset_thetao1.data if y in years_feb_29: ind_time += 1 end_rangedate = "%s"%y+"-02-29" subset_thetao2 = DS.thetao.sel(time = slice(start_rangedate, end_rangedate)) var_arr[29*ind_time:29*(ind_time+1),:,:,:] = subset_thetao2.data
minimum = np.nanmin(var_arr) print(minimum) maximum = np.nanmax(var_arr) print(maximum) moyenne = np.mean(var_arr) print(moyenne) [/code] Но я получаю это сообщение об ошибке, не понимая, откуда взялось значение 21: [code]Cell In[7], line 38 var_arr[29*ind_time:29*(ind_time+1),:,:,:] = subset_thetao2.data
ValueError: could not broadcast input array from shape (29,1,1,2) into shape (21,1,1,2) [/code] Кто-то сказал мне, что учитываемые данные могут остановиться на году-02-28 T:00:00:00 (для 28-дневных лет) и году-02-29 T: 00:00:00 (для 29-дневных лет) и что код не учитывает последний день. Итак, я попытался расширить end_rangedate до 03-01 года, но получил следующее: [code]Cell In[8], line 33 var_arr[28*ind_time:28*(ind_time+1),:,:,:] = subset_thetao1.data
ValueError: could not broadcast input array from shape (29,1,1,2) into shape (28,1,1,2) [/code] Может ли кто -нибудь объяснить мне, что я делаю не так?