
Форматирование numpy-массивов при печати

Функция numpy.array2string предоставляет гибкость для временного форматирования без изменения глобальных настроек. Она принимает параметры precision, separator, max_line_width и formatter. Пример: array2string(a, precision=1, separator=', ', max_line_width=50).
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Используется двойной цикл:
for row in matrix:
for item in row:
print(item, end=' ')
print()
Внутренний цикл проходит по элементам строки, внешний – по строкам. end=' ' сохраняет элементы на одной строке, а print() после внутреннего цикла переносит строку.
Для трехмерных массивов используется тройной цикл, где первый цикл перебирает «плоскости», второй – строки, третий – отдельные элементы:
cube = [[[1,2],[3,4]], [[5,6],[7,8]]]
for layer in cube:
for row in layer:
for item in row:
print(item, end=' ')
print()
print()
List comprehension позволяет формировать новые массивы на основе существующих с минимальным синтаксисом и высокой читаемостью. Для многомерных массивов удобно использовать вложенные list comprehension.
matrix = [[i + j*3 + 1 for i in range(3)] for j in range(3)]
Результат:
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| 7 | 8 | 9 |
even_numbers = [x for row in matrix for x in row if x % 2 == 0]
Результат:
| 2 | 4 | 6 | 8 |
При работе с трёхмерными массивами применяется тройная вложенность:
cube = [[[i + j + k for i in range(2)] for j in range(2)] for k in range(2)]
print('\n'.join([' '.join(map(str, row)) for row in matrix]))
Печать вложенных списков с отступами

Пример функции для печати:
def print_nested(lst, level=0):
for item in lst:
if isinstance(item, list):
print_nested(item, level + 1)
else:
print(‘ ‘ * level + str(item))
1
2
3
4
5
6
Для многомерных массивов полезно также ограничивать ширину каждой строки с помощью linewidth, чтобы данные не растягивались за пределы экрана: np.set_printoptions(threshold=200, linewidth=80). Параметр edgeitems задаёт количество элементов с начала и конца каждой оси, что позволяет видеть только граничные значения массива без потери информации о структуре: np.set_printoptions(edgeitems=3).
Применение метода reshape для удобного отображения

Метод reshape позволяет изменять форму многомерного массива без изменения его данных, что упрощает визуальное восприятие и обработку информации.
Примеры использования:
- Преобразование одномерного массива в матрицу:
import numpy as np arr = np.arange(12) # массив [0, 1, 2, ..., 11] matrix = arr.reshape(3, 4) # форма 3x4 print(matrix) - Подготовка данных для графиков или таблиц:
data = np.random.randint(0, 100, 20) table = data.reshape(4, 5) # 4 строки, 5 столбцов - Удобное отображение изображений:
image_flat = np.random.randint(0, 256, 1024) image_32x32 = image_flat.reshape(32, 32) # 32x32 пикселя
Рекомендации при использовании reshape:
- Произведение размеров новой формы должно совпадать с количеством элементов исходного массива.
- Для динамического вычисления одной из размерностей используйте
-1:arr.reshape(2, -1) # вторая размерность вычисляется автоматически - Метод возвращает новый массив с изменённой формой; исходный массив остаётся без изменений, если явно не использовать присваивание.
Использование reshape повышает читаемость данных и упрощает их визуальное представление в таблицах, графиках и матричных операциях.
Настройка параметров numpy.set_printoptions для читабельности

Основные параметры и рекомендации:
precision– количество знаков после запятой для чисел с плавающей точкой. Для финансовых данных обычно используютprecision=2, для научных вычислений –precision=6.suppress– отключение научной нотации. Для повседневного анализа лучшеsuppress=True, чтобы числа отображались в привычном формате.
np.set_printoptions(formatter={'float': '{:0.3f}'.format})
Примеры использования:
np.set_printoptions(precision=2, threshold=10, edgeitems=3)
np.set_printoptions(threshold=np.inf)
np.set_printoptions(suppress=True, linewidth=140)
