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,可选
触发概要而不是完整表示的数组元素总数(默认为 1000)。要始终使用完整的表示而不进行概要,请传递
sys.maxsize
。- edgeitemsint,可选
每个维度开头和结尾处概要中的数组项数(默认为 3)。
- linewidthint,可选
用于插入换行的每行字符数(默认为 75)。
- suppressbool,可选
如果为 True,则始终使用定点表示法打印浮点数,在这种情况下,当前精度下等于零的数字将打印为零。如果为 False,则当最小数字的绝对值 < 1e-4 或最大绝对值与最小值的比率 > 1e3 时,使用科学计数法。默认为 False。
- nanstrstr,可选
浮点非数字的字符串表示(默认为 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'
,则在数组总结时(即多个元素被替换为...
)不提供形状信息。如果设置为False,则禁用旧模式。
无法识别的字符串将被忽略,并发出警告以实现向前兼容性。
1.22.0 版本中已更改。
2.2 版本中已更改。
- override_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,))