Вывод многомерных массивов в Python

Как вывести многомерный массив python

Как вывести многомерный массив python

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

Форматирование 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 для удобного отображения

Метод 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. Произведение размеров новой формы должно совпадать с количеством элементов исходного массива.
  2. Для динамического вычисления одной из размерностей используйте -1:
    arr.reshape(2, -1)  # вторая размерность вычисляется автоматически
  3. Метод возвращает новый массив с изменённой формой; исходный массив остаётся без изменений, если явно не использовать присваивание.

Использование reshape повышает читаемость данных и упрощает их визуальное представление в таблицах, графиках и матричных операциях.

Настройка параметров numpy.set_printoptions для читабельности

Настройка параметров 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)

Вопрос-ответ:

Ссылка на основную публикацию