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

升级Numpy至1.14.2后Scipy.optimize.minimize抛出TypeError异常

解决Numpy 1.14.2 + Scipy minimize(SLSQP) 中的布尔减法TypeError问题

这个问题我之前在容器化服务里也碰到过,核心原因是Numpy 1.14.x版本开始彻底禁用了布尔数组的-减法操作,而旧版本的Scipy(比如0.19.x及更早)的SLSQP优化器内部代码还在使用这个被弃用的语法,直接触发了TypeError。下面给你几个可行的解决办法:

  • 升级Scipy到兼容版本
    Scipy 1.0.0及以上版本已经修复了和Numpy 1.14+的兼容性问题,针对你的Docker环境,只需要在依赖安装命令里指定Scipy的最低版本即可:

    RUN pip install scipy>=1.0.0 numpy==1.14.2
    

    新版本的Scipy会用合规的布尔操作替代旧的减法逻辑,自然就不会报错了。

  • 回退Numpy到1.13.3版本
    如果暂时不想升级Scipy(比如项目依赖旧版Scipy的某些特性),最简单的办法就是把Numpy回退到之前的1.13.3版本,这个版本还允许布尔数组的减法操作:

    RUN pip install numpy==1.13.3
    
  • 检查自定义代码中的布尔操作
    虽然你提到错误来自Scipy内部,但还是建议快速排查下自己的minimization_function或者constraints约束函数里,有没有对布尔数组使用-的情况(比如bool_arr1 - bool_arr2)。如果有的话,把它替换成np.logical_xor(bool_arr1, bool_arr2)或者位异或操作符bool_arr1 ^ bool_arr2,这也是Numpy官方推荐的替代方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:52:10