为什么NumPy中有奇怪的科学记数法?

时间:2014-11-06 02:54:29

标签: python 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),但遗憾的是没有人能够工作。

无法抑制科学显示!

1 个答案:

答案 0 :(得分:0)

这不是numpy特有的,而是一般的Python浮点表示形式。您遇到了两种不同的默认行为(科学记数法和纯十进制)。

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

Here是该主题的Stack Overflow条目。

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

print('%1.3f'% .333333333333333333333333)

输出

0.333