Перейти к содержимому

Как повернуть матрицу на 90 градусов python

  • автор:

Как повернуть массив на 90 градусов python

Проще всего это будет сделать с помощью Numpy:

import numpy as np l = [[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]] a = np.array(l) # a = array([[0, 0, 0, 0], # [0, 0, 0, 1], # [0, 0, 0, 1], # [0, 0, 0, 1]], dtype=int64) # поворот: np.rot90(a) # a = array([[0, 1, 1, 1], # [0, 0, 0, 0], # [0, 0, 0, 0], # [0, 0, 0, 0]], dtype=int64) # можно несколько раз повернуть: np.rot90(a, k=2) # a = array([[1, 0, 0, 0], # [1, 0, 0, 0], # [1, 0, 0, 0], # [0, 0, 0, 0]], dtype=int64) # "вернуть" к обычному списку списков: np.rot90(a).tolist() # => [[0, 1, 1, 1], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 

Соответственно для поворота по часовой стрелке используйте np.rot90(a, k=3) (270 градусов).

Если не использовать Numpy, то для поворота по часовой стрелке есть такой способ:

def transposed(matrix): return [[*col] for col in zip(*matrix)] def rot90: return list(map(reversed, transposed(matrix))) # или в одно действие def rot90(matrix): return [list(reversed(col)) for col in zip(*matrix)] 

. а для поворота против часовой:

def rot90(matrix): return [list(row) for row in list(zip(*matrix))[::-1]] 

Python. Нужно повернуть матрицу на 90 градусов

n = 3
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = len(a)
for i in range(len(a)):
for j in range(len(a[i])):
a[i][j] = a[n-j-1][i]
for z in a:

Дополнен 7 лет назад

n = 3
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
n = len(a)
for i in range(len(a)):
. for j in range(len(a[i])):
. a[i][j] = a[n-j-1][i]
for z in a:
. print(z)

Голосование за лучший ответ

1 2 3
4 5 6
7 8 9

7 4 1
8 5 2
9 6 3

Столбец становится строкой j=i ты верно написал
Столбец = 2-i с учетом что первый есть нулевой

то бишь обменять
a[i][j] с a[j][2-i] (ну и обменять не значит равно)

Володя БарбаричУченик (178) 7 лет назад

то есть ты имеешь в виду в 6 рядке кода должно быть a[i][j] = a[j][2-i].
ноо оно неправильно работает

Как транспонировать матрицу в Python

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

Итак, матрица состоит из строк и столбцов. Создать матрицу можно по-разному, но самый простой способ – использовать вложенные списки, как показано ниже:

matrix = [[1, 2, 4], [31, 17, 15]]

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

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

Метод 1. Транспонирование матрицы с помощью NumPy transpose()

Первый метод, который мы разберем, — это использование библиотеки NumPy. NumPy в основном работает с массивами в Python, а для транспонирования мы можем вызвать метод transpose() .

Давайте разберем всё по порядку. Для начала нам нужно импортировать модуль NumPy как np .

Дальше, в ячейке номер [25] мы создаем массив NumPy с именем arr_matrix .

В ячейке номер [26] мы вызываем метод transpose() для нашей матрицы – объекта arr_matrix , который мы создали ранее.

В ячейке номер [27] мы выводим на экран исходную матрицу arr_matrix .

А в ячейке номер [28] – транспонированную матрицу arr_transpose . Можем заметить, что в результате мы получили именно то, что нам было нужно – транспонированную матрицу.

Метод 2. Использование метода numpy.transpose()

Мы также можем транспонировать матрицу в Python с помощью numpy.transpose() . При этом мы передаем матрицу в метод transpose() в качестве аргумента.

В ячейке номер [29] мы создаем матрицу, используя массив NumPy, с именем arr_matrix .

Далее мы передаем arr_matrix в метод transpose() и сохраняем результат в новую переменную arr_transpose .

В ячейке номер [31] мы печатаем исходную матрицу arr_matrix .

А дальше мы выводим на экран транспонированную матрицу arr_transpose . Получаем результат аналогичный тому, что получили в первом примере.

Метод 3. Транспонирование матрицы с использованием библиотеки SymPy

Применение библиотеки SymPy – это еще один подход к транспонированию матрицы. Эта библиотека использует символьную математику для решения алгебраических задач.

Сначала нам, конечно же, нужно импортировать библиотеку SymPy. Она не поставляется вместе с Python по умолчанию, поэтому вы должны установить её в своей системе, иначе код не будет работать.

В ячейке номер [34] мы создаем матрицу с помощью библиотеки sympy.

Дальше, в ячейке [35], мы вызываем transpose (T) при помощи точечного оператора и сохраняем результаты в новую переменную sympy_transpose .

В ячейке номер [36] мы печатаем исходную матрицу matrix . А в ячейке номер [37] – транспонированную матрицу sympy_transpose . Как видим, у нас получилась транспонированная матрица.

Метод 4. Транспонирование матрицы с использованием вложенного цикла

В Python матрицу можно транспонировать и без применения каких-либо библиотек. Для этого нам придется использовать вложенные циклы.

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

В ячейке номер [38] мы создаем матрицу и выводим ее на экран.

В следующей ячейке мы применяем «питонический» способ узнать размерность транспонированной матрицы, используя исходную. А именно — используем генератор списков со вложенными циклами for .

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

В ячейке номер [41] мы выводим исходную матрицу Matrix . А в ячейке [42] — транспонированную матрицу trans_Matrix .

Метод 5. Использование генератора списка

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

Сначала мы создаем матрицу m , используя вложенные списки.

Затем в ячейке номер [44] мы используем вложенные циклы, как и в предыдущем примере. Однако здесь мы делаем это в одну строчку, используя генератор списков. Более того, тут нет никакой необходимости менять индексы [j] [i] местами, как мы это делали в предыдущий раз.

В следующей ячейке мы выводим исходную матрицу m . После этого в ячейке номер [42] выводим транспонированную матрицу trans_m . Как видим, желаемый результат получен.

Метод 6. Транспонирование матрицы с помощью pymatrix

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

В ячейке номер [43] мы импортируем библиотеку pymatrix. Она не поставляется вместе с Python по умолчанию, поэтому, чтобы код работал корректно, нужно установить ее в своей системе перед использованием.

Затем при помощи библиотеки pymatrix мы создаем матрицу (в ячейке [44]).

В ячейке номер [45] вызываем метод trans() для нашей матрицы и сохраняем результаты в новую переменную pymatrix_transpose.

Потом мы выводим на экран исходную матрицу matrix . А в ячейке номер [47] выводим уже транспонированную матрицу pymatrix_transpose . Как видим, код отработал правильно.

Метод 7. Использование метода zip

Zip – еще один метод транспонирования матрицы.

В ячейке номер [63] мы создаем новую матрицу, используя вложенные списки.

В ячейке номер [64] мы передаем матрицу в zip с помощью оператора * . Мы вызываем каждую строку, а затем преобразуем эту строку в новый список, который становится транспонированной матрицей.

Заключение

Итак, сегодня мы рассмотрели, как транспонировать матрицу в Python. Мы разобрали различные методы, которые могут помочь нам в транспонировании матрицы (с использованием библиотек и без них).

Мы также познакомились с несколькими новыми библиотеками, такими как pymatrix и sympy.

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

Как повернуть массив по часовой стрелке на 90 градусов?

На первой строке даны натуральные числа N и M (1 ≤ N, M ≤ 50). На следующих N строках записано по M неотрицательных чисел, не превышающих 109 – сам массив..

Выходные данные
Выведите повернутый массив в формате входных данных.
Написать программу без использования функций
Пример
Входные данные:
3 4
1 2 3 4
5 6 7 8
9 10 11 12
Выходные данные:
4 3
9 5 1
10 6 2
11 7 3
12 8 4
Подскажите, пожалуйста, не могу понять, как осуществить сам поворот

n,m = map(int,input().split()) a = [] for i in range (n): a.append(input()) k = [[0] * m] * n for i in range (n): k[i] = a[i].split()
  • Вопрос задан более трёх лет назад
  • 3517 просмотров

3 комментария

Средний 3 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *