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)[source]#
设置打印选项。
这些选项决定了浮点数、数组及其他 NumPy 对象的显示方式。
- 参数:
- precisionint 或 None,可选
浮点输出的精度位数(默认 8)。如果 floatmode 不是 fixed,则可以为 None,此时将打印必要的位数以唯一地指定该值。
- thresholdint,可选
触发摘要而非完整表示(repr)的数组元素总数(默认 1000)。若要始终使用完整表示而不进行摘要,请传递
sys.maxsize
。- edgeitemsint,可选
在每个维度的开头和结尾摘要中显示的数组元素数量(默认 3)。
- linewidthint,可选
每行的字符数,用于插入换行符(默认 75)。
- suppressbool,可选
如果为 True,则始终使用定点表示法打印浮点数,在这种情况下,在当前精度下等于零的数字将打印为零。如果为 False,则当最小数的绝对值小于 1e-4 或最大绝对值与最小值的比率大于 1e3 时,使用科学记数法。默认值为 False。
- nanstrstr,可选
浮点“非数字”(not-a-number)的字符串表示(默认 nan)。
- infstrstr,可选
浮点无穷大的字符串表示(默认 inf)。
- sign字符串,可以是 ‘-’、‘+’ 或 ‘ ’,可选
控制浮点类型的符号打印。如果为 ‘+’,则始终打印正值的符号。如果为 ‘ ’,则始终在正值的符号位置打印一个空格(空白字符)。如果为 ‘-’,则省略正值的符号字符。(默认 ‘-’)
2.0 版本中的变化: sign 参数现在可以是整数类型,以前是浮点类型。
- formatter可调用对象字典,可选
如果不是 None,键应指示相应的格式化函数适用的类型。可调用对象应返回一个字符串。未指定(通过其对应键)的类型由默认格式化程序处理。可以设置格式化程序的单个类型包括:
‘bool’
‘int’
‘timedelta’ : 一个
numpy.timedelta64
‘datetime’ : 一个
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,可选
控制浮点类型 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 复杂结构化 dtype 的打印输出。如果设置为
'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: 可调用对象,可选
如果设置,传入的函数将用于生成数组的 repr。其他选项将被忽略。
注意
每次调用
set_printoptions
时,formatter 都会被重置。使用
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,))