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

实现+DM计算逻辑时np.where报TypeError,求解决方法

问题解决:numpy.where逻辑判断报错修复

错误原因

你的代码存在两个核心问题:

  • 运算符优先级混乱:&的优先级高于>,导致代码先执行了df_move["downmove"] & 0(对浮点数组做位运算),后续比较逻辑完全偏离预期
  • 逻辑与使用错误:针对numpy布尔数组实现“且”逻辑时,必须用&而非Python内置的and,同时每个条件需要单独用括号包裹,避免优先级干扰

正确代码

df_move["+DI"] = np.where(
    (df_move["upmove"] > df_move["downmove"]) & (df_move["upmove"] > 0),
    df_move["upmove"],
    0
)

代码说明

  • 用括号分别包裹两个比较条件,确保先完成数值比较,生成两个独立的布尔数组
  • 使用&连接两个布尔数组,实现数组级别的“逻辑与”判断
  • 当两个条件同时满足时,赋值为upmove的对应值,否则赋值为0,完全匹配你需求的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:55:18