Изменение значений для 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