numpy.set_printoptions#
- numpy.set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, suppress=None, nanstr=None, infstr=None, formatter=None, sign=None, floatmode=None, *, legacy=None, override_repr=None)[源代码]#
设置打印选项.
这些选项决定了浮点数,数组和其他 NumPy 对象的显示方式.
- 参数:
- precisionint 或 None,可选
浮点输出的精度位数(默认为 8).如果 floatmode 不是“fixed”,则可以为 None,以打印尽可能多的位数来唯一指定该值.
- threshold整数,可选
触发摘要而不是完整 repr 的数组元素总数(默认为 1000).要始终使用完整的 repr 而不进行摘要,请传递
sys.maxsize.- edgeitems整数,可选
每个维度开头和结尾的摘要中的数组项数(默认为 3).
- linewidth整数,可选
用于插入换行符的每行字符数(默认为 75).
- suppressbool, 可选
如果为 True,则始终使用定点表示法打印浮点数,在这种情况下,当前精度下等于零的数字将打印为零.如果为 False,则当最小数字的绝对值< 1e-4 或最大绝对值与最小值之比> 1e3 时,将使用科学计数法.默认为 False.
- nanstrstr, optional
浮点非数字的字符串表示形式(默认为 nan).
- infstrstr, optional
浮点数无穷大的字符串表示 (默认为 inf).
- sign字符串,可以是’-‘,’+’或’ ‘,可选
控制浮点类型符号的打印方式. 如果为 ‘+’,则始终打印正值的符号. 如果为 ‘ ‘,则始终在正值的符号位置打印空格(空白字符). 如果为 ‘-‘,则省略正值的符号字符.(默认为 ‘-‘)
在 2.0 版本发生变更: sign 参数现在可以是整数类型,以前是浮点类型.
- formattercallables 的 dict,可选
如果不是 None,则键应指示相应的格式化函数所应用于的类型.可调用对象应该返回一个字符串. 未指定(通过其相应键)的类型由默认格式化程序处理. 可以为其设置格式化程序的单个类型为:
‘bool’
‘int’
‘timedelta’ : a
numpy.timedelta64‘datetime’ : a
numpy.datetime64‘float’
‘longfloat’ : 128 位浮点数
‘complexfloat’
‘longcomplexfloat’ : 由两个 128 位浮点数组成
‘numpystr’ : 类型
numpy.bytes_和numpy.str_‘object’ : np.object_ 数组
可用于一次设置一组类型的其他键是:
‘all’ : 设置所有类型
‘int_kind’ : 设置 ‘int’
‘float_kind’ : 设置 ‘float’ 和 ‘longfloat’
‘complex_kind’ : 设置 ‘complexfloat’ 和 ‘longcomplexfloat’
‘str_kind’:设置 ‘numpystr’
- floatmodestr, optional
控制浮点类型的 precision 选项的解释方式. 可以采用以下值(默认为 maxprec_equal):
- ‘fixed’: 始终精确打印 precision 位小数,
即使这样做打印的位数多于或少于唯一指定该值所需的位数.
- ‘unique’: 打印唯一表示每个值所需的最小小数位数.
不同的元素可能具有不同数量的位数. precision 选项的值将被忽略.
- ‘maxprec’: 最多打印 precision 位小数,但如果
一个元素可以用较少的位数唯一表示,则仅打印那么多位数.
- ‘maxprec_equal’: 最多打印 precision 位小数,
但如果数组中的每个元素都可以用相同数量的较少位数唯一表示,则对所有元素使用那么多位数.
- legacy : 字符串或 False ,可选字符串或
如果设置为字符串
'1.13',则启用 1.13 传统打印模式. 这通过在浮点数的符号位置包含一个空格以及 0d 数组的不同行为来近似 numpy 1.13 打印输出. 这也启用了 1.21 传统打印模式(如下所述).如果设置为字符串
'1.21',则启用 1.21 传统打印模式. 这通过不在分隔字段的逗号后和冒号后插入空格来近似 numpy 1.21 复杂结构化数据类型的打印输出.如果设置为
'1.25',则接近1.25的打印模式,这主要意味着数字标量在打印时不带类型信息,例如3.0而不是np.float64(3.0).如果设置为
'2.1',则在汇总数组时(即,多个元素被...替换)不提供形状信息.如果设置为
'2.2',则对于较大的值,使用科学计数法打印np.float16和np.float32类型的转换可能会稍后发生或根本不发生.如果设置为 False ,则禁用旧式模式.
无法识别的字符串将被忽略,并会发出警告以实现向前兼容性.
在 1.22.0 版本发生变更.
在 2.2 版本发生变更.
- override_repr: callable, optional
如果设置了传递的函数,则将用于生成数组的 repr. 其他选项将被忽略.
注释
formatter 始终通过调用
set_printoptions重置.使用
printoptions作为上下文管理器来临时设置值.示例
可以设置浮点精度:
>>> import numpy as np >>> np.set_printoptions(precision=4) >>> np.array([1.123456789]) [1.1235]
可以汇总长数组:
>>> np.set_printoptions(threshold=5) >>> np.arange(10) array([0, 1, 2, ..., 7, 8, 9], shape=(10,))
可以抑制小结果:
>>> eps = np.finfo(float).eps >>> x = np.arange(4.) >>> x**2 - (x + eps)**2 array([-4.9304e-32, -4.4409e-16, 0.0000e+00, 0.0000e+00]) >>> np.set_printoptions(suppress=True) >>> x**2 - (x + eps)**2 array([-0., -0., 0., 0.])
可以使用自定义格式化程序来根据需要显示数组元素:
>>> np.set_printoptions(formatter={'all':lambda x: 'int: '+str(-x)}) >>> x = np.arange(3) >>> x array([int: 0, int: -1, int: -2]) >>> np.set_printoptions() # formatter gets reset >>> x array([0, 1, 2])
要恢复默认选项,可以使用:
>>> np.set_printoptions(edgeitems=3, infstr='inf', ... linewidth=75, nanstr='nan', precision=8, ... suppress=False, threshold=1000, formatter=None)
此外,要临时覆盖选项,请使用
printoptions作为上下文管理器:>>> with np.printoptions(precision=2, suppress=True, threshold=5): ... np.linspace(0, 10, 10) array([ 0. , 1.11, 2.22, ..., 7.78, 8.89, 10. ], shape=(10,))