每当我在循环中打印数组时,它都会显示为
[ 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)
但遗憾的是它们都不起作用。
不能压制科学展示!
最佳答案
这不是特定于 numpy,而是通常作为字符串的 Python 浮点表示。您遇到了两种不同的默认行为(科学计数法和纯十进制)。
This描述将浮点格式化为字符串。
Here是关于该主题的 Stack Overflow 条目。
以下代码将数字格式化为三位小数:
print('%1.3f'% .333333333333333333333333)
输出
0.333
关于python - 为什么 NumPy 中有奇怪的科学记数法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26770963/