【问题标题】:Changing values for ndarray based on condition upon another ndarray of the same shape根据另一个相同形状的 ndarray 的条件更改 ndarray 的值
【发布时间】:2018-12-13 11:30:12
【问题描述】:

所以我有两个 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)

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

【问题讨论】:

  • mask = temp > T_25 后跟ndvi[mask] = np.nan?

标签: python numpy landsat


【解决方案1】:

您的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

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2018-04-12
    • 2017-05-14
    • 1970-01-01
    • 2021-10-15
    • 2018-06-05
    相关资源
    最近更新 更多