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})
不知道你这个问题是否已经解决, 如果还没有解决的话:问题描述:当浮点数的整数部分超过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中数据的科学计数法显示。