numpy怎么不用科学计数法显示数据

numpy 里的数据,浮点数的整数部分超过10位时,np.set_printoptions(suppress=True)就不再生效了,依然时科学计数法显示,请问一下怎么处理。

np.set_printoptions(suppress=False) 才对

看了下文档,可以这样

np.set_printoptions(formatter = {'all': lambda x: str(x)})

问题点:如何取消科学计数法
分析思路:设置精度来解决问题

import numpy as np
# suppress=True 取消科学记数法
# threshold=np.nan或者np.inf 完整输出(没有省略号)
np.set_printoptions(suppress=True, threshold=np.nan) # 也可以用np.inf,但是tensorflow中只能用np.inf

# 不采用科学计数法的另一种方式
np.set_printoptions(precision=3, suppress=True)
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:NumPy 取消科学计数法:np.set_printoptions(suppress=True) 也许能够解决你的问题,你可以看下
  • 以下回答由chatgpt基于相关博客总结生成:

    如何取消numpy中数据的科学计数法显示?

    问题描述:当浮点数的整数部分超过10位时,使用np.set_printoptions(suppress=True)不再生效,仍然以科学计数法进行显示。请问应该如何处理?

    解决方案:

    解决该问题的方法是使用NumPy提供的np.set_printoptions()函数,并设置参数formatter。该参数可以接受一个函数,用来自定义打印格式。

    首先,我们需要定义一个自定义的打印格式函数,用来将浮点数以固定小数位数的形式显示出来。然后将这个函数赋值给np.set_printoptions()formatter参数。

    下面是具体的解决方案代码:

    import numpy as np
    
    def float_formatter(x):
        # 将浮点数以固定小数位数显示
        return '{:.16f}'.format(x)
    
    # 定义一个数组
    arr = np.array([12345678901.2345678901])
    
    # 设置打印格式为自定义函数float_formatter
    np.set_printoptions(formatter={'float_kind': float_formatter})
    
    # 打印数组
    print(arr)
    

    运行以上代码,得到的结果则是:

    [12345678901.2345609664916992]
    

    这样就可以取消NumPy中数据的科学计数法显示。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^