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

升级Numpy从1.23.3到1.25.0后触发uint64取负溢出警告

Numpy 1.25.0中无符号64位整数取负触发RuntimeWarning的问题

问题复现

  • Numpy 1.23.3版本:执行无符号64位整数取负操作,输出正确结果且无警告
    import numpy as np
    x = np.uint64(0xffffffff)
    print(-x)
    # 输出:18446744069414584321
    
  • Numpy 1.25.0版本:相同操作输出结果正确,但触发溢出警告
    import numpy as np
    x = np.uint64(0xffffffff)
    print(-x)
    # 输出:
    # 18446744069414584321
    # <ipython-input-4-adbfb5bb01c0>:1: RuntimeWarning: overflow encountered in scalar negative
    #   print(-x)
    

其他用户反馈

确实有大量用户遇到过这个问题,这是Numpy 1.25.x版本对无符号整数标量运算的警告逻辑调整导致的。此前版本中,无符号整数取负的溢出行为被默认忽略;而1.25.0开始,这类标量运算的溢出会触发RuntimeWarning,不过运算结果仍遵循无符号整数的补码规则(即-x等价于2^64 - x),不影响计算正确性。

如果需要消除该警告,可采用以下两种方案:

  • 临时抑制警告:
    import numpy as np
    np.warnings.filterwarnings('ignore', category=np.RuntimeWarning)
    x = np.uint64(0xffffffff)
    print(-x)
    
  • 显式类型转换(业务逻辑允许时):
    import numpy as np
    x = np.uint64(0xffffffff)
    print(-x.astype(np.int64))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:46:04