为什么NumPy中会出现奇怪的科学计数法?

3
每当我在循环中打印数组时,它会显示为:
[  1.170e-01   2.187e+08   2.000e-02]

即使我使用了以下代码
np.set_printoptions(suppress=True,precision=3)

运行代码后,我会将相同的输出复制粘贴。
a1=[  1.170e-01,   2.187e+08 ,  2.000e-02]
print a1

并且它正确地打印了它,内容如下:
[0.117, 218700000.0, 0.02]

显然这是NumPy中的不良行为?在循环内部和外部打印不应该有区别!

实际代码如下:

ll = (calib_params+np.sqrt(np.diag(params[1])*residuals/(len(data_outsample)-3))*nstd)
ul = (calib_params-np.sqrt(np.diag(params[1])*residuals/(len(data_outsample)-3))*nstd)
print ll
print ul

我甚至尝试了np.round(ll,3)np.round(ul,3),但遗憾的是它们都不起作用。
无法抑制科学计数法显示!
1个回答

0

这不仅适用于numpy,而且适用于Python浮点数表示为字符串的一般情况。您遇到了两种不同的默认行为(科学计数法和纯十进制)。

这里描述了将浮点数格式化为字符串的方法。

这里是关于此主题的Stack Overflow条目。

以下代码将数字格式化为三个小数位:

print('%1.3f'% .333333333333333333333333)

输出

0.333

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接