jax.numpy.set_printoptions

jax.numpy.set_printoptions#

jax.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 对象的显示方式。

参数:
  • precision (int or None, optional) – 浮点数输出的小数位数(默认8位)。如果 floatmode 不是 fixed,则可以为 None,以打印出唯一指定值所需的小数位数。

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

  • edgeitems (int, optional) – 每个维度开始和结束时摘要中的数组项数(默认值为3)。

  • linewidth (int, optional) – 每行字符数,用于插入换行符(默认75)。

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

  • nanstr (str, optional) – 浮点数非数值的字符串表示(默认 nan)。

  • infstr (str, optional) – 浮点无穷大的字符串表示(默认 inf)。

  • sign (string, either '-', '+', or ' ', optional) – 控制浮点类型的符号打印。如果为 ‘+’,始终打印正数值的符号。如果为 ‘ ‘,始终在正数值的符号位置打印一个空格(空白字符)。如果为 ‘-’,省略正数值的符号字符。(默认值为 ‘-’) .. versionchanged:: 2.0 符号参数现在可以是整数类型,之前仅限于浮点类型。

  • formatter (dict of callables, optional) – 如果不是 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’

  • floatmode (str, optional) – 控制浮点类型的 precision 选项的解释。可以取以下值(默认 maxprec_equal): * ‘fixed’:总是精确打印 precision 个小数位,即使这会打印比必要更多的位数或更少的位数。 * ‘unique’:打印表示每个值唯一所需的最小小数位数。不同的元素可能有不同数量的位数。precision 选项的值被忽略。 * ‘maxprec’:最多打印 precision 个小数位,但如果一个元素可以用更少的位数唯一表示,则只用那么多位数打印。 * ‘maxprec_equal’:最多打印 precision 个小数位,但如果数组中的每个元素都可以用相同数量的更少位数唯一表示,则对所有元素使用那么多位数。

  • legacy (string or False, optional) – 如果设置为字符串 '1.13' ,则启用 1.13 遗留打印模式。这通过在浮点数的符号位置包含一个空格和不同的 0d 数组行为来近似 numpy 1.13 的打印输出。这也会启用 1.21 遗留打印模式(如下所述)。如果设置为字符串 '1.21' ,则启用 1.21 遗留打印模式。这通过不在分隔字段和冒号后的逗号后插入空格来近似 numpy 1.21 复杂结构化 dtypes 的打印输出。如果设置为 '1.25' ,则近似 1.25 的打印,这主要意味着数值标量在打印时没有其类型信息,例如打印为 3.0 而不是 np.float64(3.0)。如果设置为 False,则禁用遗留模式。无法识别的字符串将被忽略,并发出警告以确保向前兼容。.. versionadded:: 1.14.0 .. versionchanged:: 1.22.0 .. versionchanged:: 2.0

  • override_repr (callable, optional) – 如果设置了一个传递的函数,将用于生成数组的 repr。其他选项将被忽略。

参见

get_printoptions, printoptions, array2string

备注

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

小结果可以被抑制:

>>> 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.  ])