NumPy reshape и transpose: разница на примере и задача

reshape меняет форму массива, а транспонирование переставляет оси. Совпадение итогового shape не означает, что элементы стоят в одинаковом порядке.

Возьмём a = np.array([[1, 2, 3], [4, 5, 6]]). При a.T первая строка результата — [1, 4]. При обычном a.reshape(3, 2) первая строка — [1, 2]. В обоих случаях форма (3, 2), но содержимое различается.

В упражнении ниже сравните обе операции на массиве из условия. Проверьте расположение значений, а не только размеры; решение можно запустить без регистрации.

.T и reshape: одинаковая форма, разное расположение значений

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая на одном массиве показывает разницу между транспонированием и изменением формы:

  1. Читает два целых числа rows и cols. Гарантируется, что они различаются и оба не меньше 2.
  2. Создаёт flat = np.arange(rows * cols).
  3. Создаёт mat формы (rows, cols) через reshape.
  4. Создаёт via_t = mat.T.
  5. Независимо создаёт via_reshape = flat.reshape(cols, rows).
  6. Печатает заголовок T:, затем сам массив via_t, заголовок reshape:, затем сам массив via_reshape.
  7. Последней строкой печатает same_shape=True, если формы результатов совпадают.

Не переставляйте значения вручную. В этой задаче важно увидеть: .T и reshape(cols, rows) дают одинаковую форму, но располагают исходные значения по-разному.

Ввод и вывод

Программа читает данные из stdin и пишет результат в stdout.

Формат ввода

Одна строка: два различных целых числа rows cols, каждое не меньше 2.

Формат вывода

Сначала T: и напечатанный NumPy-массив via_t, затем reshape: и массив via_reshape, затем строка same_shape=True.

Пример

Ввод
2 3
Вывод
T:
[[0 3]
 [1 4]
 [2 5]]
reshape:
[[0 1]
 [2 3]
 [4 5]]
same_shape=True
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи