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