根据另一个形状相同的ndarray的条件更改ndarray的值

时间:2018-12-13 03:17:40

标签: python numpy landsat

所以我有两个ndarray 一个包含ndvi值,另一个包含温度

条件是,对于温度高于所有温度25%的所有像素,必须将其像素的ndvi值更改为np.nan。

所以我目前正在使用: temp [temp> T_25] = np.nan(仅将temp设置为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]]

假设我希望那些nan位于ndvi ...形状为(600,400)

感谢您阅读本文。 任何帮助都感激不尽。

1 个答案:

答案 0 :(得分:0)

您的行temp[temp > T_25] = np.nan几乎是正确的。您只需将要索引的数组更改为ndvi

ndvi[temp > T_25] = np.nan

应该做你想做的事。

您还可以将T_25的计算结果折叠到同一行中(假设T_25temp中值的25%),如下所示:

ndvi[temp > np.percentile(temp, 25)] = np.nan