2014-11-06 71 views
3

每当打印循环中的阵列它显示为为什么NumPy中有奇怪的科学记数法?

[ 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)但遗憾的是他们没有工作。

无法压制科学展示!

回答

0

这不是特定于numpy,而是以Python浮点表示法作为一个字符串。您遇到了两种不同的默认行为(科学记数法和普通小数)。

This描述将浮点格式化为字符串。

Here是该主题的Stack Overflow条目。

下面的代码格式的数三位小数:

print('%1.3f'% .333333333333333333333333) 

输出

0.333