NumPy: вычисления и устройство массивов

Сортировка массивов: sort и argsort

Содержание курса

np.sort по двум осям: shape результата и неизменность исходного массива

Что уже дано

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

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

Напишите программу, которая:

  1. Читает из stdin два целых числа R и C — число строк и столбцов.
  2. Читает следующие R строк; каждая содержит ровно C целых чисел через пробел. Создаёт двумерный массив M через np.array(..., dtype=int) формы (R, C).
  3. До любых сортировок сохраняет копию: M_orig = M.copy().
  4. Вычисляет s0 = np.sort(M, axis=0) — каждый столбец отсортирован по возрастанию.
  5. Вычисляет s1 = np.sort(M, axis=1) — каждая строка отсортирована по возрастанию.
  6. Выводит три последовательных блока, всего 2R + 3 строк:
  • блок 1: строка s0 shape=<shape>, затем R строк матрицы s0;
  • блок 2: строка s1 shape=<shape>, затем R строк матрицы s1;
  • блок 3: одна строка unchanged=<bool>True, если M не был изменён, то есть np.array_equal(M, M_orig), иначе False.

Точный формат вывода показан в разделе «Ввод и вывод».

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

R C
row_0_col_0 row_0_col_1 ... row_0_col_{C-1}
...
row_{R-1}_col_0 ... row_{R-1}_col_{C-1}

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

s0 shape=(R, C)
<строки матрицы s0, каждаязначения через пробел>
s1 shape=(R, C)
<строки матрицы s1, каждаязначения через пробел>
unchanged=<True или False>
О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    2 3
    3 1 4
    1 5 2
    
    Ожидаемый вывод
    s0 shape=(2, 3)
    1 1 2
    3 5 4
    s1 shape=(2, 3)
    1 3 4
    1 2 5
    unchanged=True
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

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