logo

Перекладіть матрицю в одній лінії в Python

Перенесення матриці в Python означає, що перегортає її по його діагоналі, перетворюючи всі ряди у стовпці та всі стовпці в рядки. Для Expresspl e матриця, як [[1 2] [3 4] [5 6]], яка має 3 ряди та 2 стовпці, стає [[1 3 5] [2 4 6]], яка має 2 ряди та 3 стовпці після перенесення. Давайте зрозуміємо різні методи зробити це ефективно.

Використання розуміння списку

Список розуміння використовується для ітерації через кожен елемент матриці. У заданому прикладі ми повторюємо через кожен елемент матриці (M) у стовпці-майорі і присвоюємо результат матриці Рез, яка є перенесеною m.



цикл for у bash
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-ту елемент.

string.compare c#

Пов’язані статті:

  • Список розуміння
  • Python itertools
  • Python Zip
  • ланцюг ()
  • кортеж
  • Python numpy