Я довольно новичок в Python, и я пытаюсь рассчитать минимальную, среднюю и максимальную ежемесячную температуру по ежедневным данным за февраль. < /p>
У меня немного неприятностей Применение моего кода с других месяцев до февраля. < /p>
Вот мой код за 31 день: < /p>
import xarray as xr
import numpy as np
import copernicusmarine
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)
var_arr = np.zeros((341,len(DS['depth']),len(DS['latitude']),len(DS['longitude'])))
ind_time = -1
for y in range(2010,2021):
ind_time += 1
print(y)
start_rangedate = "%s"%y+"-01-01"
end_rangedate = "%s"%y+"-01-31"
subset_thetao = DS.thetao.sel(time = slice(start_rangedate, end_rangedate))
var_arr[31*ind_time:31*(ind_time+1),:,:,:] = subset_thetao.data
minimum = np.nanmin(var_arr)
print(minimum)
moyenne = np.mean(var_arr)
print(moyenne)
maximum = np.nanmax(var_arr)
print(maximum)
# 31 * 11 (years) = 341
< /code>
он работает хорошо. < /p>
для февраля я впервые попробовал это: < /p>
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_28 = -1
ind_time_29 = -1
for y in range(2010,2021):
print(y)
start_rangedate = "%s"%y+"-02-01"
if y in years_feb_28:
ind_time_28 += 1
end_rangedate = "%s"%y+"-02-28"
subset_thetao1 = DS.thetao.sel(time = slice(start_rangedate, end_rangedate))
var_arr[28*ind_time_28:28*(ind_time_28+1),:,:,:] = subset_thetao1.data
if y in years_feb_29:
ind_time_29 += 1
end_rangedate = "%s"%y+"-02-29"
subset_thetao2 = DS.thetao.sel(time = slice(start_rangedate, end_rangedate))
var_arr[29*ind_time_29:29*(ind_time_29+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)
# (8 x 28) + (3 x 29) = 311
< /code>
это работает, но значения кажутся неверными для меня. < /p>
Результат: < /p>
minimum : 0.0
mean : 10.118808567523956
maximum :6.510576634161725
< /code>
Я попробовал с одним ind_time. < /p>
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 от: < /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)
< /code>
Кто-то сказал мне, что принятые во внимание данные могут остановиться на 02-28 гг. 00:00:00 (в течение 29 дней) и что код не учитывает последний день. Поэтому я попытался расширить End_Rangedate на год-03-01, но я понимаю: < /p>
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> это работает, но значения кажутся неверными для меня. < /p> Результат: < /p> minimum : 0.0 mean : 10.118808567523956 maximum :6.510576634161725 < /code> Я попробовал с одним ind_time. < /p> 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 от: < /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) < /code> Кто-то сказал мне, что принятые во внимание данные могут остановиться на 02-28 гг. 00:00:00 (в течение 29 дней) и что код не учитывает последний день. Поэтому я попытался расширить End_Rangedate на год-03-01, но я понимаю: < /p> 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] Может ли кто -нибудь объяснить мне, что я делаю не так?
Я довольно новичок в Python, и я пытаюсь рассчитать минимальную, среднюю и максимальную ежемесячную температуру по ежедневным данным за февраль.
У меня немного неприятностей Применение моего кода с других месяцев до февраля.
Вот мой код за 31...
Я довольно новичок в Python, и я пытаюсь рассчитать минимальную, среднюю и максимальную ежемесячную температуру по ежедневным данным за февраль.
У меня немного неприятностей Применение моего кода с других месяцев до февраля.
Вот мой код за 31...
Застрял на последней части программы, которую я пишу. У меня есть код, который успешно предлагает пользователю ввести начальный баланс, ежемесячные взносы и процентную ставку и использует его для расчета суммы, сэкономленной через 18 лет (RESP)....
Застрял на последней части программы, которую я пишу. У меня есть код, который успешно предлагает пользователю ввести начальный баланс, ежемесячные взносы и процентную ставку и использует его для расчета суммы, сэкономленной через 18 лет (RESP)....
Застрял на последней части программы, которую я пишу. У меня есть код, который успешно предлагает пользователю ввести начальный баланс, ежемесячные взносы и процентную ставку и использует его для расчета суммы, сэкономленной через 18 лет (RESP)....