You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python重分类栅格为NoData时出现空文件或报错如何解决?

问题原因与解决方法
  • 第一次使用&(逻辑与)的错误:单个栅格像元的值不可能同时等于41、43、49三个值,所以判断条件永远不成立,所有像元都被赋值为np.nan,输出的tif自然为空。
  • 第二次使用Python原生or的错误:or/and是Python内置的标量逻辑运算符,无法直接作用于numpy数组的逐元素运算,因此会抛出真值判断模糊的报错。
正确实现代码

numpy中数组逐元素的逻辑或运算要使用|运算符,每个判断条件必须用小括号包裹,避免运算符优先级问题:

binmask = np.where( (lista == 41) | (lista == 43) | (lista == 49), 1, np.nan )

如果后续需要匹配的目标值更多,更简洁的写法是用np.isin()直接判断值是否在目标列表中:

target_values = [41,43,49]
binmask = np.where(np.isin(lista, target_values), 1, np.nan)

内容的提问来源于stack exchange,提问作者bkGeog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:18:04