为了使numpydisplay任意格式的浮点数组,您可以定义一个自定义函数,该函数将浮点值作为其输入并返回格式化字符串:
In [1]: float_formatter = "{:.2f}".format
The f
这里的意思是定点格式(不是“科学的”),并且.2
表示两位小数(您可以阅读有关字符串格式的更多信息here http://docs.python.org/2/library/stdtypes.html#string-formatting).
让我们用浮点值来测试一下:
In [2]: float_formatter(1.234567E3)
Out[2]: '1234.57'
要使 numpy 以这种方式打印所有浮点数组,您可以传递formatter=
论证np.set_printoptions
:
In [3]: np.set_printoptions(formatter={'float_kind':float_formatter})
现在 numpy 将以这种方式打印所有浮点数组:
In [4]: np.random.randn(5) * 10
Out[4]: array([5.25, 3.91, 0.04, -1.53, 6.68]
请注意,这仅影响 numpy 数组,而不影响标量:
In [5]: np.pi
Out[5]: 3.141592653589793
它也不会影响非浮点数、复杂浮点数等 - 您需要为其他标量类型定义单独的格式化程序。
您还应该意识到,这only影响 numpy 如何显示浮点值 - 将在计算中使用的实际值将保留其原始精度。
例如:
In [6]: a = np.array([1E-9])
In [7]: a
Out[7]: array([0.00])
In [8]: a == 0
Out[8]: array([False], dtype=bool)
麻木打印a
就好像它等于0
,但它不是 - 它仍然等于1E-9
.
如果您确实想以影响计算中使用它们的方式对数组中的值进行舍入,则应该使用np.round
,正如其他人已经指出的那样。