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)[source]#

設定列印選項。

這些選項決定浮點數、陣列和其他 NumPy 物件的顯示方式。

參數:
  • precision (intNone, 選用) – 浮點數輸出的精確位數 (預設為 8)。如果 floatmode 不是 fixed,則可以為 None,以列印足夠的位數來唯一指定值。

  • threshold (int, 選用) – 觸發摘要而非完整 repr 的陣列元素總數 (預設為 1000)。若要始終使用完整 repr 而不進行摘要,請傳遞 sys.maxsize

  • edgeitems (int, 選用) – 摘要中每個維度開頭和結尾的陣列項目數 (預設為 3)。

  • linewidth (int, 選用) – 每行字元數,用於插入換行符號 (預設為 75)。

  • suppress (bool, 選用) – 如果為 True,則始終使用定點表示法列印浮點數,在這種情況下,目前精確度中等於零的數字將列印為零。如果為 False,則當最小數字的絕對值 < 1e-4 或最大絕對值與最小值的比率 > 1e3 時,將使用科學記號表示法。預設值為 False。

  • nanstr (str, 選用) – 浮點數非數字的字串表示形式 (預設為 nan)。

  • infstr (str, 選用) – 浮點數無限大的字串表示形式 (預設為 inf)。

  • sign (string, 可以是 '-', '+', 或 ' ', 選用) –

    控制浮點型別符號的列印。如果為 '+',則始終列印正值的符號。如果為 ' ',則始終在正值的符號位置列印空格 (空白字元)。如果為 '-',則省略正值的符號字元。(預設為 '-')

    變更於 2.0 版本: sign 參數現在可以是整數型別,先前型別為浮點型別。

  • formatter (dict of callables, 選用) –

    如果不是 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, 選用) –

    控制浮點型別的 precision 選項的解譯方式。可以採用以下值 (預設 maxprec_equal)

    • ’fixed’: 始終精確列印 precision 個小數位數,

      即使這樣列印的位數會多於或少於唯一指定值所需的位數。

    • ’unique’: 列印唯一表示每個值所需的最少小數位數。

      不同的元素可能具有不同位數。將忽略 precision 選項的值。

    • ’maxprec’: 最多列印 precision 個小數位數,但如果

      元素可以用更少的位數唯一表示,則僅以那麼多位數列印。

    • ’maxprec_equal’: 最多列印 precision 個小數位數,

      但如果陣列中的每個元素都可以用相同數量的較少位數唯一表示,則對所有元素使用那麼多位數。

  • legacy (string 或 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 (callable, 選用) – 如果設定,則傳遞的函式將用於產生陣列的 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], 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,))