Изменение значений для ndarray в зависимости от состояния другого ndarray той же формы

Таким образом, у меня есть два ndarray, один содержит значения ndvi, другой содержит температуру

Условие состоит в том, что для всех пикселей с температурой, превышающей 25% всех температур, значение ndvi его пикселя должно быть изменено на np.nan.

Так что я в настоящее время использую: temp[temp > T_25]=np.nan (который только устанавливает временную шкалу в nan). Мне просто нужно найти индекс в приведенном выше и применить к ndvi?

Я попытался сгладить его и использовать np.where(temp[temp > T_25]), но он, похоже, просто дает мне пустой массив.

как выглядит температура после изменения 75% перед выравниванием:

[[      nan       nan       nan ...       nan       nan       nan]
 [      nan       nan 229.3249  ...       nan       nan       nan]
 [229.35771 229.32663 229.28688 ...       nan       nan       nan]
 ...
 [229.09474 229.14499 229.17618 ...       nan       nan       nan]
 [229.1779  229.27306 229.27135 ...       nan       nan       nan]
 [229.30244       nan 229.33873 ...       nan       nan       nan]]

Предположим, я хочу, чтобы эти НАН были в NDVI... форма (600,400)

Спасибо, что прочитали это. Любая помощь будет высоко ценится.

1 ответ

Ваша линия temp[temp > T_25] = np.nan почти правильно. Вам просто нужно изменить массив, который вы индексируете, чтобы быть ndvi:

ndvi[temp > T_25] = np.nan

Должен делать то, что вы хотите.

Вы также можете сложить расчет T_25 в той же строке (при условии, что T_25 25-й процентиль значений в temp) вот так:

ndvi[temp > np.percentile(temp, 25)] = np.nan
Другие вопросы по тегам