Вывести транспонированную матрицу python

Как работать с матрицами в Python

Матрица — это двумерный массив, состоящий из M строк и N столбцов. Матрицы часто используются в математических вычислениях. Программисты работают с матрицами в основном в научной области, однако их можно использовать и для других вещей, например, для быстрой генерации уровней в видео-игре.

Матрицы и библиотека NumPy

Программист может самостоятельно реализовать все функции для работы с матрицами: умножение, сложение, транспонирование и т. д. На Python это сделать гораздо проще, чем на более низкоуровневых языках, таких как C.

Но каждый раз писать одни и те же алгоритмы не имеет смысла, поэтому была разработана библиотека NumPy. Она используется для сложных научных вычислений и предоставляет программисту функции для работы с двумерными массивами.

Вместо того чтобы писать десятки строк кода для выполнения простых операций над матрицами, программист может использовать одну функцию из NumPy. Библиотека написана на Python, C и Фортране, поэтому функции работают даже быстрее, чем на чистом Python.

Подключение библиотеки NumPy

NumPy не встроена в интерпретатор Python, поэтому перед импортом её необходимо установить. Для этого в можно воспользоваться утилитой pip. Введите в консоле команду:

Читайте также:  Как вывести с черного спи

Теперь, когда библиотека установлена, её можно подключить с помощью команды import . Для удобства переименуем numpy при импорте в np следующим образом:

Создание

Для создании матрицы используется функция array(). В функцию передаётся список. Вот пример создания, мы подаём в качестве аргумента функции двумерный список:

Вторым параметром можно задать тип элементов матрицы:

Тогда в консоль выведется:

Обратите внимание, что если изменить int на str, то тип элементов изменился на строковый. Кроме того, при выводе в консоль NumPy автоматически отформатировал вывод, чтобы он выглядел как матрица, а элементы располагались друг под другом.

В качестве типов элементов можно использовать int, float, bool, complex, bytes, str, buffers. Также можно использовать и другие типы NumPy: логические, целочисленные, беззнаковые целочисленные, вещественные, комплексные. Вот несколько примеров:

  • np.bool8 — логическая переменная, которая занимает 1 байт памяти.
  • np.int64 — целое число, занимающее 8 байт.
  • np.uint16 — беззнаковое целое число, занимающее 2 байта в памяти.
  • np.float32 — вещественное число, занимающее 4 байта в памяти.
  • np.complex64 — комплексное число, состоящее из 4 байтового вещественного числа действительной части и 4 байтов мнимой.

Вы также можете узнать размер матрицы, для этого используйте атрибут shape:

Первое число (2) — количество строк, второе число (3) — количество столбцов.

Нулевая матрица

Если необходимо создать матрицу, состоящую только из нулей, используйте функцию zeros():

Результат этого кода будет следующий:

Получение строки, столбца и элемента

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

Получить столбец уже не так просто. Используем срезы, в качестве первого элемента среза мы ничего не указываем, а второй элемент — это номер искомого столбца. Пример:

Чтобы получить элемент, нужно указать номер столбца и строки, в которых он находится. Например, элемент во 2 строке и 3 столбце — это 5, проверяем (помним, что нумерация начинается с 0):

Умножение и сложение

Чтобы сложить матрицы, нужно сложить все их соответствующие элементы. В Python для их сложения используется обычный оператор «+».

Пример сложения:

Результирующая матрица будет равна:

Важно помнить, что складывать можно только матрицы с одинаковым количеством строк и столбцов, иначе программа на Python завершится с исключением ValueError.

Умножение матриц сильно отличается от сложения. Не получится просто перемножить соответствующие элементы двух матриц. Во-первых, матрицы должны быть согласованными, то есть количество столбцов одной должно быть равно количеству строк другой и наоборот, иначе программа вызовет ошибку.

Умножение в NumPy выполняется с помощью метода dot().

Пример умножения:

Результат выполнения этого кода будет следующий:

Транспонированная и обратная

Транспонированная матрица — это матрица, у которой строки и столбцы поменялись местами. В библиотеки NumPy для транспонирования двумерных матриц используется метод transpose(). Пример:

В результате получится матрица:

Чтобы получить обратную матрицу, необходимо использовать модуль linalg (линейная алгебра). Используем функцию inv():

Результирующая матрица будет равна:

Получение максимального и минимального элемента

Чтобы получить максимальный или минимальный элемент, можно пройтись по всем элементам матрицы с помощью двух циклов for . Это стандартный алгоритм перебора, который известен почти каждому программисту:

NumPy позволяет найти максимальный и минимальный элемент с помощью функций amax() и amin(). В качестве аргумента в функции нужно передать саму матрицу. Пример:

Как видим, результаты реализации на чистом Python и реализации с использованием библиотеки NumPy совпадают.

Заключение

На Python можно реализовать все необходимые функции для работы с матрицами. Чтобы упростить работу программистов, была создана библиотека NumPy. Она позволяет производить сложные математические вычисления легко и без ошибок, избавляя программиста от необходимости каждый раз писать один и тот же код.

Источник

Линейная алгебра на Python. [Урок 2]. Транспонирование Матрицы

В этом уроке мы рассмотрим операцию “транспонирование матрицы” и как она выполняется на Python. Также разберем на примерах свойства этой операции.

Транспонирование матрицы

Транспонирование матрицы – это процесс замены строк матрицы на ее столбцы, а столбцов соответственно на строки. Полученная в результате матрица называется транспонированной. Символ операции транспонирования – буква T .

Для исходной матрицы:

Транспонированная будет выглядеть так:

➤ Пример на Python

Решим задачу транспонирования матрицы на Python . Создадим матрицу A:

Транспонируем матрицу с помощью метода transpose():

Существует сокращенный вариант получения транспонированной матрицы, он очень удобен в практическом применении:

Рассмотрим на примерах свойства транспонированных матриц. Операции сложения и умножение матриц, а также расчет определителя более подробно будут рассмотрены в последующих уроках.

Свойство 1 . Дважды транспонированная матрица равна исходной матрице:

Свойство 2 . Транспонирование суммы матриц равно сумме транспонированных матриц:

➤Пример на Python

Свойство 3 . Транспонирование произведения матриц равно произведению транспонированных матриц расставленных в обратном порядке:

➤ Пример на Python

В данном примере, для умножения матриц, использовалась функция dot() из библиотеки Numpy.

Свойство 4 . Транспонирование произведения матрицы на число равно произведению этого числа на транспонированную матрицу:

➤ Пример на Python

Свойство 5 . Определители исходной и транспонированной матрицы совпадают:

➤ Пример на Python

Ввиду особенностей Python при работе с числами с плавающей точкой, в данном примере вычисления определителя рассматриваются только первые девять значащих цифр после запятой (за это отвечает параметр ‘.9g’ ).

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Источник

Матрица в Python – основы работы

В этой статье мы познакомим вас с матрицей Python. Каждую операцию матрицы мы будем реализовывать с помощью кода.

Что такое матрица в Python?

Матрица в Python – это прямоугольный двумерный массив, в котором данные хранятся в строках и столбцах. Матрица может хранить данные любого типа, такие как числа, строки, выражения и т. д. Мы должны ознакомиться с основными концепциями матрицы перед ее использованием.

Данные расположены по горизонтали, называемые строками, а по вертикали – столбцами. Количество элементов внутри матрицы равно (R) X (C), где R – строки, а C – столбцы. Python не имеет встроенного типа для матриц, поэтому мы будем использовать несколько списков в качестве матриц.

Мы изучим следующие операции, которые применяются к матрицам:

  • сложение матриц;
  • матричное вычитание;
  • умножение матриц;
  • скалярное произведение;
  • векторное произведение;
  • и многие другие операции.

Работа матриц

Приведенная ниже матрица имеет размер 2×2, что означает, что у нее две строки и два столбца.

Создание матрицы в Python

Мы можем создать матрицу на Python, используя вложенный список. Все элементы заключаются в квадратные скобки ([]) и разделяются запятой. Посмотрим на следующие примеры:

  • Мы создали матрицу 3×3, используя вложенный список.
  • Первая строка содержит [‘Arun’, 25, 90, 74] в форме списка.
  • Вторая строка содержит список [‘Sachin’, 410, 87.50, 130].
  • Третья содержит [56, «Абхинай», 253, 471] в виде списка.
  • Мы замечаем, что наша матрица состоит из чисел, а также строкового значения.

Чтение матричных данных

Прочитаем каждую строку определенной матрицы.

В следующем примере мы прочитаем последний элемент каждой строки с помощью программы Python.

В приведенном выше коде мы создали матрицу и получили длину матрицы. Мы повторили каждую строку, используя цикл for, и напечатали результат. Можно прочитать любую строку или столбец, используя вышеуказанный метод.

Давайте разберемся со следующей работой матрицы.

Добавление двух матриц

Мы добавим две матрицы и, используя вложенный цикл for, пройдемся по заданным матрицам.

  • Первая и вторая матрицы – 3×3.
  • Мы инициализировали еще одну матрицу mat3, в которой будет храниться равнодействующая матрица.
  • Применили вложенный цикл for для перебора матриц, внешний цикл перебирает первую матрицу.
  • Управление передается во внутренний цикл; затем переходит ко второму внутреннему циклу, здесь значение i равно нулю, и k также равно нулю.
  • В первой итерации первые элементы mat1 и mat2, добавленные друг к другу, будет продолжаться до тех пор, пока не будут добавлены все элементы.

Умножение двух матриц

Умножение двух матриц такое же, как в приведенном выше коде, только нужно изменить оператор + на *.

Транспонирование матрицы

Транспонирование – это операция, при которой строка данной матрицы преобразуется в столбец и наоборот. Рассмотрим на примере.

В приведенном выше коде у нас есть два цикла for для перебора каждой строки и каждого столбца. Как мы видим, в приведенном выше выводе мы присвоили mat1 [i] [j] и res [j] [k].

Транспонирование с помощью списка

Мы можем использовать значение списка, чтобы транспонировать матрицу с одной строкой кода.

Результат такой же, как и выше. Значение списка сократило количество строк кода и транспонировало матрицу.

Получение матричного ввода от пользователя

До сих пор мы обсуждали предварительно определенные матрицы. Но что, если пользователь хочет ввести свои данные. Итак, разберем следующий пример пользовательской матрицы.

В приведенном выше коде мы взяли данные пользователя, чтобы ввести количество строк и столбцов. Мы ввели 3 строки и 3 столбца; это означает, что в матрице будет 9 элементов. В цикле for элементы вставляются в пустую матрицу с помощью функции append(). Второй цикл for используется для печати входных данных в матричном формате.

Использование функции NumPy и map()

Python предоставляет внешнюю библиотеку NumPy. Она используется для научных вычислений; мы изучим NumPy с матрицей в разделе ниже и используем ее для матрицы пользовательского ввода.

Пример: Создание матрицы с использованием библиотеки NumPy

Библиотека NumPy помогает нам работать с массивом. Чтобы работать с NumPy, нам нужно установить ее, используя следующую команду.

После успешной установки мы должны импортировать ее в нашу программу.

Давайте разберемся в следующем примере.

Работа с матрицей с помощью NumPy

Мы можем выполнять все операции с матрицей, используя numpy.array(), такие как сложение, вычитание, транспонирование, нарезание матрицы и т. д.

Добавление матрицы

Мы создадим две матрицы с помощью функции numpy.array() и добавим их с помощью оператора +. Давайте разберемся в следующем примере.

Умножение

Мы будем использовать метод numpy.dot() для умножения обеих матриц. Это точечное умножение матриц mat1 и mat2, обрабатывает 2D-массив и выполняет умножение.

Нарезка элементов

Мы можем разрезать элемент матрицы, как в стандартном списке Python. Нарезка возвращает элемент на основе индекса начала / конца. Мы также можем сделать отрицательную нарезку. Синтаксис приведен ниже.

Arr представляет имя матрицы. По умолчанию начальный индекс равен 0, например – [: 3], это означает, что начальный индекс равен 0. Если мы не предоставим конечное значение, он будет учитывать длину массива. Мы можем передавать отрицательные значения индекса как в начало, так и в конец. В следующем примере мы применим нарезку в обычном массиве, чтобы понять, как она работает.

Теперь мы реализуем нарезку по матрице. Для выполнения следуйте синтаксису ниже.

Mat1 [row_start: row_end, col_start: col_end]

В приведенном выше синтаксисе:

  • Первое начало / конец представляет строки, которые означают выбор строк матрицы.
  • Первое начало / конец представляет столбцы, которые означают выбор столбца матрицы.

Мы будем выполнять нарезку в приведенной ниже матрице.

Вышеупомянутая матрица состоит из четырех строк. В 0-м ряду есть [4, 10, 60, 18, 20], в 1-й строке – [35, 16, 19, -12, 41] и так далее. В нем пять столбцов. Рассмотрим на примере.

В приведенном выше примере мы напечатали первую и вторую строки и нарезали первый, второй и третий столбцы. Согласно синтаксису нарезки мы можем получить любые строки и столбцы.

Пример – печать первой строки и всех столбцов:

Пример – печать строк матрицы:

Заключение

До сих пор мы обсуждали базовую матрицу с использованием Python. Матрица Python – это специализированный двумерный прямоугольный список данных. Она может состоять из чисел, строк, выражения, символов и т. д. Python не предоставляет прямого способа реализации матричного типа данных. Мы можем создать матрицу, используя вложенный список и библиотеку NumPy.

Источник

Оцените статью