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

np.where运行报错:含多个元素的数组真值不明确,求解决方法

问题排查与解决方案

错误原因

  • 核心问题是np.where调用时的语法错误:你为三个入参多套了一层外层括号,将判断条件、满足条件返回值、不满足条件返回值打包成了单个元组传入函数
  • np.where仅接收单个参数时,会尝试将输入转换为单个布尔值,而你传入的元组中包含多元素的numpy数组,无法直接转换为单个布尔值,因此触发对应报错

修正方法

直接去掉np.where参数外多余的括号即可,修正后代码如下:

red_array = red.ReadAsArray()
swir1_array = swir1.ReadAsArray()
# 对两个波段做差值运算
difference = (red_array - swir1_array).astype(np.int16)
# 差值大于2000输出1,否则输出0
red_swir = np.where(difference > 2000, 1, 0)

如果追求更简洁的写法,也可以直接将布尔判断结果转换为整型,无需调用np.where,效果完全一致:

red_swir = (difference > 2000).astype(np.int16)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:03