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

Python 3.12中f-string打印numpy类型显示异常如何解决?

Python 3.12中f-string打印numpy.float64显示类型的解决办法

这是因为Python 3.12对f-string的{x = }格式化语法做了调整——现在它会优先调用对象的__repr__方法,而Python 3.11及之前版本用的是__str__方法。numpy的float64类型,__repr__会输出带类型标识的格式,__str__则直接输出数值,所以出现了差异。

以下是几种解决办法:

  • 显式转换为字符串输出
    直接用str()包裹变量,或者不用=格式化语法,直接写数值输出:

    import numpy
    x = numpy.sqrt(3)
    print(f"{str(x) = }")
    # 或者更简洁的写法:
    print(f"x = {x}")
    
  • 使用格式化指定符强制数值输出
    通过f-string的格式指定符,强制按数值格式打印:

    import numpy
    x = numpy.sqrt(3)
    # 固定小数位格式
    print(f"{x = :f}")
    # 自动保留有效数字(和原输出精度一致)
    print(f"{x = :g}")
    
  • 全局修改numpy的打印行为
    如果希望所有numpy对象的打印都和旧版本一致,可以设置numpy的legacy打印选项:

    import numpy
    numpy.set_printoptions(legacy='1.25')
    x = numpy.sqrt(3)
    print(f"{x = }")
    

    这个设置会让numpy使用旧版的__repr__输出逻辑,和Python 3.11的效果一致,且全局生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:39:59