Перекладіть матрицю в одній лінії в Python
Перенесення матриці в Python означає, що перегортає її по його діагоналі, перетворюючи всі ряди у стовпці та всі стовпці в рядки. Для Expresspl e матриця, як [[1 2] [3 4] [5 6]], яка має 3 ряди та 2 стовпці, стає [[1 3 5] [2 4 6]], яка має 2 ряди та 3 стовпці після перенесення. Давайте зрозуміємо різні методи зробити це ефективно.
Використання розуміння списку
Список розуміння використовується для ітерації через кожен елемент матриці. У заданому прикладі ми повторюємо через кожен елемент матриці (M) у стовпці-майорі і присвоюємо результат матриці Рез, яка є перенесеною m.
Python 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-т з кожної з послідовностей аргументів або ітерелів. У цьому прикладі ми розпакуємо наш масив за допомогою *, а потім застібаємо його, щоб отримати транспозцію.
Python m = [( 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 повертає перенесений вигляд пропущеної багатовимірної матриці.
Python import 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' після змінної
Python import 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 () - це функція, яка приймає ряд ітерів і повертає одну ітере.
Python from 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-ту елемент.
Пов’язані статті:
- Список розуміння
- Python itertools
- Python Zip
- ланцюг ()
- кортеж
- Python numpy