Вывод массивов NumPy#

Эта страница объясняет, как управлять форматированием вывода массивов NumPy. Обратите внимание, что эти параметры печати применяются только к массивам, а не к скалярам.

Определение параметров печати#

Применение настроек глобально#

Используйте numpy.set_printoptions для изменения настроек печати на всю сессию выполнения. Чтобы проверить текущие настройки печати, используйте numpy.get_printoptions:

>>> np.set_printoptions(precision=2)
>>> np.get_printoptions()
{'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 2, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False, 'override_repr': None}

Чтобы восстановить настройки по умолчанию, используйте:

>>> np.set_printoptions(edgeitems=3, infstr='inf',
... linewidth=75, nanstr='nan', precision=8,
... suppress=False, threshold=1000, formatter=None)

Временное применение настроек#

Используйте numpy.printoptions как контекстный менеджер для временного переопределения настроек печати в определённой области:

>>> arr = np.array([0.155, 0.184, 0.173])
>>> with np.printoptions(precision=2):
...     print(arr)
[0.15 0.18 0.17]

Все ключевые слова, которые применяются к numpy.set_printoptions также применяются к numpy.printoptions.

Изменение количества знаков точности#

По умолчанию отображается 8 дробных цифр. Это число можно изменить с помощью precision ключевое слово.

>>> arr = np.array([0.1, 0.184, 0.17322])
>>> with np.printoptions(precision=2):
...     print(arr)
[0.1 0.18 0.17]

The floatmode опция определяет, как precision настройка интерпретируется. По умолчанию, floatmode=maxprec_equal отображает значения с минимальным количеством цифр, необходимых для их однозначного представления, используя одинаковое количество цифр для всех элементов. Если вы хотите показать точно такое же количество цифр, указанное precision, используйте floatmode=fixed:

>>> arr = np.array([0.1, 0.184, 0.173], dtype=np.float32)
>>> with np.printoptions(precision=2, floatmode="fixed"):
...     print(arr)
[0.10 0.18 0.17]

Изменение того, как nan и inf отображаются#

По умолчанию, numpy.nan отображается как nan и numpy.inf отображается как inf. Вы можете переопределить эти представления с помощью nanstr и infstr параметры:

>>> arr = np.array([np.inf, np.nan, 0])
>>> with np.printoptions(nanstr="NAN", infstr="INF"):
...     print(arr)
[INF NAN  0.]

Управление научной нотацией#

По умолчанию NumPy использует научную нотацию, когда:

  • Абсолютное значение наименьшего числа меньше, чем 1e-4, или

  • Отношение наибольшего абсолютного значения к наименьшему больше, чем 1e3

    >>> arr = np.array([0.00002, 210000.0, 3.14])
    >>> print(arr)
    [2.00e-05 2.10e+05 3.14e+00]
    

Чтобы отключить научную нотацию и всегда использовать фиксированную точку, установите suppress=True:

>>> arr = np.array([0.00002, 210000.0, 3.14])
>>> with np.printoptions(suppress=True):
...     print(arr)
[     0.00002 210000.           3.14   ]

Применение пользовательских функций форматирования#

Вы можете применять пользовательские функции форматирования к определённым или всем типам данных, используя formatter ключевое слово. См. numpy.set_printoptions для получения дополнительных сведений о поддерживаемых ключах формата.

Например, чтобы отформатировать datetime64 значения с пользовательской функцией:

>>> arr = np.array([np.datetime64("2025-01-01"), np.datetime64("2024-01-01")])
>>> with np.printoptions(formatter={"datetime":lambda x: f"(Year: {x.item().year}, Month: {x.item().month})"}):
...     print(arr)
[(Year: 2025, Month: 1) (Year: 2024, Month: 1)]