我很好奇,是否有任何方式打印格式化numpy.arrays,例如,以类似于这样的方式:
x = 1.23456
print '%.3f' % x
Run Code Online (Sandbox Code Playgroud)
如果我想打印numpy.array浮点数,它会打印几个小数,通常采用"科学"格式,即使对于低维数组也很难读取.但是,numpy.array显然必须打印成一个字符串,即用%s.这有解决方案吗?
我不知道这是否是一个明显的错误,但是在运行Python脚本来改变模拟的参数时,我意识到缺少delta = 0.29和delta = 0.58的结果.经过调查,我注意到以下Python代码:
for i_delta in range(0, 101, 1):
delta = float(i_delta) / 100
(...)
filename = 'foo' + str(int(delta * 100)) + '.dat'
Run Code Online (Sandbox Code Playgroud)
为delta = 0.28和0.29生成相同的文件,与.57和.58相同,原因是python返回float(29)/ 100为0.28999999999999998.但这不是一个系统性的错误,在某种意义上它并不是每个整数都会发生的.所以我创建了以下Python脚本:
import sys
n = int(sys.argv[1])
for i in range(0, n + 1):
a = int(100 * (float(i) / 100))
if i != a: print i, a
Run Code Online (Sandbox Code Playgroud)
而且我看不到发生此舍入错误的数字中的任何模式.为什么这些特定数字会发生?
可能重复:
带有浮点数的Python舍入错误
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> 4.2 - 1.8
2.4000000000000004
>>> 1.20 - 1.18
0.020000000000000018
>>> 5.1 - 4
1.0999999999999996
>>> 5 - 4
1
>>> 5.0 - 4.0
1.0
Run Code Online (Sandbox Code Playgroud)
为什么Python的数学错误?