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,))