Python 更改 ndarray 数字格式为多位数

2 投票
3 回答
1931 浏览
提问于 2025-04-17 14:59

我刚开始学Python,常常感到困惑和卡壳...

我在读取一个包含数字表格的文件时,它被读取成了一个numpy.ndarray。

Python会改变数字的显示方式。比如:

在输入文件中,我有这个数字:56143.0254154,而在输出文件中,这个数字显示成了:5.61430254e+04。

但我想在输出文件中保持原来的格式。

我试过使用string.format或者locale.format函数,但都没有成功。

有没有人能帮我解决这个问题?

谢谢!

Ruxy

3 个回答

0

你需要创建一个格式化的字符串。假设变量 number 是你想要打印的数字,在 Python 2.7 或 3 中,你可以使用

print("{:20.7f}".format(number))

而在 Python 2 中,你可以使用

print "%20.7f" % number

另外,如果你使用 Numpy 的方法来输出数组,可以参考 Warren 提出的方式。

1

如果你想打印一个numpy数组,你可以通过使用set_printoptions这个函数来控制不同数据类型的显示格式。比如说:

In [39]: a = array([56143.0254154, 1.234, 0.012345])

In [40]: print(a)
[  5.61430254e+04   1.23400000e+00   1.23450000e-02]

In [41]: set_printoptions(formatter=dict(float=lambda t: "%14.7f" % t))

In [42]: print(a)
[ 56143.0254154      1.2340000      0.0123450]
2

试试 numpy.set_printoptions() 这个功能——在这里你可以设置打印出来的数字位数,还可以关闭科学计数法的显示。比如,使用 numpy.set_printoptions(precision=8,suppress=True) 这个命令,就可以让输出显示8位数字,并且不会出现像“…e+xx”这样的格式。

撰写回答