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,以便打印足够多的位数来唯一地指定值。

thresholdint,可选

触发摘要而不是完整 repr 的数组元素总数(默认 1000)。要始终使用完整的 repr 而不进行摘要,请传递 sys.maxsize

edgeitemsint,可选

每个维度开头和结尾的摘要中的数组项数(默认 3)。

linewidthint,可选

用于插入换行的每行字符数(默认 75)。

suppressbool,可选

如果为 True,则始终使用定点表示法打印浮点数,在这种情况下,当前精度下等于零的数字将打印为零。如果为 False,则当最小数字的绝对值 < 1e-4 或最大绝对值与最小绝对值的比率 > 1e3 时,使用科学计数法。默认值为 False。

nanstrstr,可选

浮点数“非数字”(not-a-number)的字符串表示形式(默认 nan)。

infstrstr,可选

浮点数“无穷大”(infinity)的字符串表示形式(默认 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 兼容打印模式。这通过不插入字段分隔符(逗号)和冒号后面的空格来近似 1.21 版本 numpy 对复杂结构化 dtypes 的打印输出。

如果设置为 '1.25',则近似 1.25 的打印,主要意味着数值标量将不带其类型信息打印,例如打印为 3.0 而不是 np.float64(3.0)

如果设置为 '2.1',则在摘要数组时(即,用 ... 替换多个元素)不提供形状信息。

如果设置为 '2.2',则打印 np.float16np.float32 类型时,向科学计数法过渡可能会更晚或根本不会发生,对于较大的值。

如果设置为 False,则禁用兼容模式。

对于未来兼容性,将忽略无法识别的字符串并发出警告。

版本 1.22.0 中已更改。

版本 2.2 中已更改。

override_repr: callable,可选

如果设置,则将使用传入的函数来生成数组的 repr。其他选项将被忽略。

备注

  • formatter 始终会通过调用 set_printoptions 来重置。

  • 使用 printoptions 作为上下文管理器来临时设置这些值。

  • 这些打印选项仅适用于 NumPy ndarray,不适用于标量。

并发注意事项: 请参阅 文本格式化选项

示例

浮点数精度可以设置

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