Как отзеркалить матрицу в python
Перейти к содержимому

Как отзеркалить матрицу в python

  • автор:

Зеркально отобразить матрицу C++

sam, представленный мной код работает. Но не выполняется зеркальное отображение, ибо туго соображаю как его реализовать.

Ничего, что этот исходник не компилируется?

Вносил правки, не заметил ошибку. Исправил.

Кроме неописанных переменных код содержит ошибки и недоработки:

  1. Неправильное удаление массива.
  2. Неправильная инициализация массива числами, если я правильно понял в радиусе от «a» до «b» как в диапазоне от «a» до «b» включительно.
  3. «Enter size (number line and numbers in line) Nбольше 0 — это важно.
  4. Для #include заголовков из библиотеки компилятора используются угловые скобки.
  5. Проверка введенных пользователем n, m, a, b сделана не user friendly. Лучше сразу проверять ввод и при некорректном вводе повторять запрос, а не выходить из программы.

Если это всё реализовать, плюс добавить зеркальное отображение, то получится примерно так:

#include #include #include using namespace std; int main() < int n, m, a, b; bool ok; do < cout 0 and M > 0" > n; cout > m; ok = n > 0 && m > 0; if (!ok) cout while (!ok); do < cout > a; cout > b; ok = a < b; if (!ok) cout while (!ok); // создание массива int **dina = new int*[n]; for (int i = 0; i < n; i++) dina[i] = new int[m]; // заполнение массива srand((unsigned int)time(0)); for (int j = 0; j < n; j++) for (int o = 0; o < m; o++) dina[j][o] = rand() % (b - a + 1) + a; // вывод массива cout cout // вывод массива cout cout = a / 2 && dina[f][w] > // удаление двумерного динамического массива for (int i = 0; i

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

P.S. Дальше уже сам понял как отобразить верхнюю часть на нижнюю.
Еще раз спасибо.

Но отзеркаливание полностью отражает матрицу относительно горизантальной оси, а нужно верхнюю моловину матрицы на нижнюю.

// отзеркалить верхнюю половину массива на нижнюю половину for (int i = 0; i < n / 2; ++i) < for (int j = 0; j < m; ++j) < dina[n - i - 1][j] = dina[i][j]; >> 

Кстати, в результате такого «зеркаления» набор чисел в матрице изменится. Поэтому видимо «вывести на екран все числа которые попадают в радиус то a/2 до b/2» надо сделать до изменения матрицы.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Отражение матрицы по горизонтальной оси

#1 Дек. 9, 2018 18:12:16

Zyxer25 Зарегистрирован: 2018-11-25 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail

Отражение матрицы по горизонтальной оси

Помогите разработать функцию, которая зеркально отражает входную матрицу по горизонтали

#2 Дек. 10, 2018 06:17:25

Rafik Зарегистрирован: 2018-09-04 Сообщения: 231 Репутация: 27 Профиль Отправить e-mail

Отражение матрицы по горизонтальной оси

Даю подсказку: всю матрицу представить как список, каждая строка матрицы — список, вложенный в первый. У списка есть такая полезная вещь, как reverse. После применения reverse получаем список с элементами в обратном порядке. Эта функция ничего не возвращает, а только перестраивает список.

matr = [[1,2,5,4,0],[9,1,3,1,2]] for stroka in matr: stroka.reverse() print(stroka) 

Как отзеркалить матрицу в python

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Как транспонировать матрицу в 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.

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

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

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