实现+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
相关产品推荐
相关产品推荐

