Перенесення матриці в Python означає, що перегортає її по його діагоналі, перетворюючи всі ряди у стовпці та всі стовпці в рядки. Для Expresspl e матриця, як [[1 2] [3 4] [5 6]], яка має 3 ряди та 2 стовпці, стає [[1 3 5] [2 4 6]], яка має 2 ряди та 3 стовпці після перенесення. Давайте зрозуміємо різні методи зробити це ефективно.
Використання розуміння списку
Список розуміння використовується для ітерації через кожен елемент матриці. У заданому прикладі ми повторюємо через кожен елемент матриці (M) у стовпці-майорі і присвоюємо результат матриці Рез, яка є перенесеною m.
цикл for у bashPython
m = [[1 2] [3 4] [5 6]] res = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))] for row in res: print(row)
Випуск
[1 3 5] [2 4 6]
Пояснення: Цей вираз створює нову матрицю, взявши кожен стовпець з оригіналу як ряд у новій. Він обмінюється рядами з стовпчиками.
У співати блискавки
Python Zip повертає ітератор кортежів, де I-т-корт містить елемент I-т з кожної з послідовностей аргументів або ітерелів. У цьому прикладі ми розпакуємо наш масив за допомогою *, а потім застібаємо його, щоб отримати транспозцію.
Pythonm = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row)
Випуск
(1 4 7 10) (2 5 8 11) (3 6 9 12)
Пояснення: Цей код переносить матрицю м використання Zip (*m) . * Розпаковує рядки і Zip () Групи елементів колонки. Кожен вихідний кортеж являє собою стовпець із вихідної матриці, що ефективно замінює рядки та стовпці.
За допомогою numpy
Python Numpy-це пакет обробки масиву загального призначення, призначений для ефективного маніпулювання великими багатовимірними масивами.
Приклад 1: Метод Transpose повертає перенесений вигляд пропущеної багатовимірної матриці.
Pythonimport numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m))
Випуск
[[1 4] [2 5] [3 6]]
Пояснення: numpy.transpose () Поміняйте ряди та стовпці матриці m. Він перетворює вихідну матрицю 2 рядків і 3 стовпців в один з 3 рядами та 2 стовпцями, що ефективно перевозять його.
Приклад 2: Використання '.t' після змінної
Pythonimport numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T)
Випуск
[[1 4] [2 5] [3 6]]
Пояснення: Цей код використовує Numpy для створення 2D .T . З .T Атрибут замінюють рядки та стовпці, що перетворюють оригінальну матрицю 2x3 у матрицю, перенесену 3x2.
Використання itertools
Python itertools - це модуль, який забезпечує різні функції, які працюють над ітераторами для створення складних ітераторів. Chain () - це функція, яка приймає ряд ітерів і повертає одну ітере.
Pythonfrom itertools import chain import time import numpy as np def transpose2(M): M = M.tolist() n = len(M[0]) L = list(chain(*M)) return [L[i::n] for i in range(n)] m = np.array([[1 2 3] [4 5 6]]) start = time.time_ns() res = transpose2(m) end = time.time_ns() print(res) print('Time taken' end - start 'ns')
Випуск
[[1 4] [2 5] [3 6]] Time taken 9813 ns
Пояснення: Спочатку він перетворює матрицю в список списків, що спрямовує його в один список, використовуючи ланцюг (*м), а потім відновлює перенесену матрицю, нарізавши кожен N-ту елемент.
string.compare c#
Пов’язані статті:
- Список розуміння
- Python itertools
- Python Zip
- ланцюг ()
- кортеж
- Python numpy