Как перебрать один массив и выбрать значения на основе индексов в другом массиве?Python

Программы на Python
Anonymous
Как перебрать один массив и выбрать значения на основе индексов в другом массиве?

Сообщение Anonymous »

Я пытаюсь взять значения из t2m_data (массив данных широты и долготы с соответствующими 2-метровыми температурами в хронологическом порядке с 1 ноября 1980 года по 31 марта 2021 года) и проиндексировать их на основе погодных режимов в Regimes_cluster (массив данных всего лишь кластеры в хронологическом порядке с 1 ноября 1980 г. по 31 марта 2021 г.). Конечным результатом будет массив данных о двухметровых температурах для режима 0 (арктический минимум), режима 1 (Аляскинский хребет), режима 3 (Тихоокеанская впадина) и режима 4 (арктический максимум), которые я затем смогу составить для каждого из них. .
Пример Regimes_cluster — 1D-массив
[[2 2 2 ... 0 0 0]]
Начало кода
#Получение данных t2m за все годы (1980-2021) в качестве объектов datetime для ввода в режим, затем будет иметь климатологию t2m для каждого режима
сохранено = False
если сохранено == False:

Код: Выделить всё

year = \[1981+i for i in range(0,41)\]

first = True
for yr in (year):
leap = dt.datetime(yr,12,31).timetuple().tm_yday == 366
if leap == True:
endday = 151
else:
endday = 150
dates = [dt.datetime(yr-1,11,1) + dt.timedelta(days=x) for x in range(0,endday)]
for dy in dates:
yyyymmdd = dt.datetime.strftime(dy, '%Y%m%d')
yyyy = dy.year
data = '/curtana/merra2t2m/'+str(yyyy)+'/merra2_T2M_SLP_dly_avg_'+yyyymmdd+'.nc4'
data2 = xr.open_dataset(data)
temp_data = data2.T2M
if first == False:
T_all = xr.concat([T_all,temp_data], dim='time')
else:
T_all = temp_data
first = False
print("Here is t2m", T_all)
t2m_data = T_all
t2m_clim = t2m_data.mean(dim='time')
print(t2m_clim)
# Импорт данных режима
Regimes_data = xr.open_dataset('/home/jgeorge32/Regime_Analysis/regime_dates.nc4')
Regimes_array = Regimes_data.to_array( dim='cluster')
#print(Regimes_array)
Regimes_time = Regimes_array.times.data
Regimes_dtime = [dt.datetime.utcfromtimestamp(Regimes_time .astype(int) * 1e-9) для i в диапазоне(len(Regimes_time))]
Regimes_cluster = Regimes_array.variable.data
print(Regimes_cluster)
для индекса Regimes_cluster в перечислении(Regimes_cluster):
if Regimes_cluster == 0:
print(t2m_data[index])
Конец кода
Я ожидал, что это даст только те индексы в t2m_data, где они соответствуют индексам, где значение режима было 0, но это не так, потому что когда я запускал if Regimes_cluster.any() == 1, Напечатанные значения не изменились. Это говорит о том, что либо я неправильно интерпретирую то, что написал в цикле for в конце кода, либо использую неправильную функцию. Я пробовал Regimes_cluster.all(), а также команду np.where, но безуспешно.

Подробнее здесь: https://stackoverflow.com/questions/786 ... other-arra

Вернуться в «Python»