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

强制设置np.float64仍仅显示8位小数的技术咨询

为什么Numpy卡方距离计算结果仅显示8位小数?

你的问题本质是Numpy默认的打印精度设置限制了显示位数,而非计算过程中的精度损失:

  1. 浮点数存储与显示的区别
    float64类型本身支持15-17位有效数字的精度,但Numpy默认会将浮点数输出截断到8位左右的有效数字(具体是np.get_printoptions()里的precision参数默认值为8)。你强制转换为float64后,计算结果的实际精度是足够的,只是打印时被简化了。

  2. 验证实际精度
    可以通过查看结果数组的dtype属性确认存储精度:

    d = chi2_distance(a, b)
    print(d.dtype)  # 输出应为float64
    

    也可以通过取出单个值查看其完整精度,比如用Python原生的字符串格式化:

    print(f"{d[0]:.15f}")  # 会显示15位小数,体现float64的实际精度
    
  3. 修改显示精度的方法

    • 全局修改Numpy打印设置:
      import numpy as np
      np.set_printoptions(precision=15, suppress=False)
      
      之后所有Numpy数组的打印都会显示更多位数。
    • 临时格式化输出:
      不需要全局修改的话,直接用格式化字符串输出单个值或数组即可。

注:补充一句,标准卡方距离公式通常为sum((a-b)^2/(a+b)),你的实现更接近余弦相似度的变形,不过这和当前精度显示问题无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:12:08