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

标签 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) 但遗憾的是它们都不起作用。

不能压制科学展示!

最佳答案

这不是特定于 numpy,而是通常作为字符串的 Python 浮点表示。您遇到了两种不同的默认行为(科学计数法和纯十进制)。

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

Here是关于该主题的 Stack Overflow 条目。

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

print('%1.3f'% .333333333333333333333333)

输出

0.333

关于python - 为什么 NumPy 中有奇怪的科学记数法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26770963/

相关文章:

python - Python-将地理数据插入 Elasticsearch 后,如何搜索数据?

python - 识别django中数据库对象是什么类型

Python:生成具有趋势的随机时间序列数据(例如周期性、指数衰减等)

python - 2 个数组的 Numpy 索引

python - Numpy-y 从点集构建多项式数组的方法

python - 数学方程的 Numpy 向量化

python - 在 python 中,对逗号分隔的域名列表执行 DNS 查询的最有效方法是什么?

python - 创建空白字段并使用 sqlite、python 接收 INTEGER PRIMARY KEY

python - 如何用matplotlib控制彩色图像渲染?

arrays - Numpy:重新排列矩阵以使每一行与其左/右上下文堆叠的最有效方法是什么?