Функция set_printoptions
Функция set_printoptions устанавливает глобальные параметры
отображения массивов NumPy. Она влияет на то, как массивы
выводятся в консоль при использовании print и других
методов строкового представления. Настройки применяются ко
всем последующим выводам в текущей сессии Python.
Синтаксис
np.set_printoptions(
precision=None,
threshold=None,
edgeitems=None,
linewidth=None,
suppress=None,
nanstr=None,
infstr=None,
formatter=None
)
Основные параметры функции:
- ⁅b⁆precision⁅/b⁆ - количество десятичных знаков для чисел с плавающей точкой (по умолчанию 8);
- ⁅b⁆threshold⁅/b⁆ - общее количество элементов, при превышении которого массив сокращается с многоточием (по умолчанию 1000);
- ⁅b⁆edgeitems⁅/b⁆ - количество элементов в начале и конце каждой размерности при сокращении (по умолчанию 3);
- ⁅b⁆linewidth⁅/b⁆ - максимальное количество символов в строке вывода (по умолчанию 75);
- ⁅b⁆suppress⁅/b⁆ - подавляет использование экспоненциальной записи для малых чисел (по умолчанию False);
- ⁅b⁆nanstr⁅/b⁆ - строковое представление для NaN (по умолчанию 'nan');
- ⁅b⁆infstr⁅/b⁆ - строковое представление для бесконечности (по умолчанию 'inf');
- ⁅b⁆formatter⁅/b⁆ - словарь пользовательских функций форматирования для разных типов данных.
Пример
Давайте изменим точность вывода чисел с плавающей точкой:
import numpy as np
arr = np.array([0.123456789, 1.987654321, 3.141592653])
print("По умолчанию:")
print(arr)
np.set_printoptions(precision=3)
print("С точностью 3 знака:")
print(arr)
np.set_printoptions(precision=5)
print("С точностью 5 знаков:")
print(arr)
Результат выполнения кода:
По умолчанию:
[0.12345679 1.98765432 3.14159265]
С точностью 3 знака:
[0.123 1.988 3.142]
С точностью 5 знаков:
[0.12346 1.98765 3.14159]
Пример
Подавим экспоненциальную запись для очень малых чисел:
import numpy as np
arr = np.array([0.00000123, 0.00000456, 0.00000789])
print("Без подавления:")
print(arr)
np.set_printoptions(suppress=True)
print("С подавлением:")
print(arr)
np.set_printoptions(suppress=False) # возврат к стандарту
Результат выполнения кода:
Без подавления:
[1.23e-06 4.56e-06 7.89e-06]
С подавлением:
[0.00000123 0.00000456 0.00000789]
Пример
Настроим отображение больших массивов с сокращением:
import numpy as np
# Создаём массив из 20 элементов
arr = np.arange(20)
print("По умолчанию (показывает все 20):")
print(arr)
# Устанавливаем порог 10 элементов
np.set_printoptions(threshold=10)
print("С порогом 10 элементов:")
print(arr)
# Устанавливаем количество краевых элементов
np.set_printoptions(threshold=10, edgeitems=2)
print("С порогом 10 и 2 краевыми:")
print(arr)
np.set_printoptions(threshold=1000) # возврат к стандарту
Результат выполнения кода:
По умолчанию (показывает все 20):
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
С порогом 10 элементов:
[0 1 2 3 4 ... 15 16 17 18 19]
С порогом 10 и 2 краевыми:
[0 1 ... 18 19]
Пример
Настроим ширину строки для компактного вывода:
import numpy as np
# Создаём массив чисел
arr = np.arange(30).reshape(3, 10)
print("Стандартная ширина (75 символов):")
print(arr)
# Устанавливаем меньшую ширину
np.set_printoptions(linewidth=40)
print("Ширина 40 символов:")
print(arr)
np.set_printoptions(linewidth=75) # возврат к стандарту
Результат выполнения кода:
Стандартная ширина (75 символов):
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]]
Ширина 40 символов:
[[ 0 1 2 3 4 5 6 7
8 9]
[10 11 12 13 14 15 16 17
18 19]
[20 21 22 23 24 25 26 27
28 29]]
Пример
Изменим строковые представления для NaN и бесконечности:
import numpy as np
arr = np.array([np.nan, np.inf, -np.inf, 1.5])
print("Стандартное представление:")
print(arr)
np.set_printoptions(nanstr='NaN', infstr='INF')
print("С изменёнными строками:")
print(arr)
np.set_printoptions(nanstr='nan', infstr='inf') # возврат к стандарту
Результат выполнения кода:
Стандартное представление:
[ nan inf -inf 1.5]
С изменёнными строками:
[ NaN INF -INF 1.5]
Пример
Используем пользовательское форматирование чисел:
import numpy as np
arr = np.array([1.23456, 2.34567, 3.45678])
print("Стандартный вывод:")
print(arr)
# Задаём кастомный формат для чисел с плавающей точкой
np.set_printoptions(
formatter={'float': lambda x: f'{x:+.3f}'}
)
print("С форматированием +.3f:")
print(arr)
# Можно форматировать целые числа как шестнадцатеричные
int_arr = np.array([10, 15, 255])
np.set_printoptions(
formatter={'int': lambda x: f'0x{x:02X}'}
)
print("Целые в шестнадцатеричном виде:")
print(int_arr)
np.set_printoptions(formatter=None) # возврат к стандарту
Результат выполнения кода:
Стандартный вывод:
[1.23456 2.34567 3.45678]
С форматированием +.3f:
[+1.235 +2.346 +3.457]
Целые в шестнадцатеричном виде:
[0x0A 0x0F 0xFF]
Пример
Комбинируем несколько параметров для удобного вывода:
import numpy as np
# Создаём массив с разными данными
arr = np.random.default_rng(0).random((3, 8)) * 100
print("Исходный массив:")
print(arr)
# Настраиваем вывод
np.set_printoptions(
precision=2,
suppress=True,
threshold=15,
edgeitems=2,
linewidth=50
)
print("Настроенный вывод:")
print(arr)
np.set_printoptions() # сброс к значениям по умолчанию
Результат выполнения кода:
Исходный массив:
[[63. 54. 79. 82. 27. 49. 40. 61.]
[47. 55. 81. 78. 89. 92. 54. 23.]
[45. 28. 78. 22. 95. 41. 73. 31.]]
Настроенный вывод:
[[63. 54. 79. 82. 27. ... 61.]
[47. 55. 81. 78. 89. ... 23.]
[45. 28. 78. 22. 95. ... 31.]]
Смотрите также
-
функцию
get_printoptions,
которая возвращает текущие настройки вывода -
функцию
printoptions,
которая временно изменяет параметры в контекстном менеджере -
функцию
seterr,
которая настраивает обработку ошибок в вычислениях -
функцию
geterr,
которая возвращает текущие настройки обработки ошибок