Сортировка массивов: sort и argsort
Содержание курса
Найди и исправь: перепутаны axis в np.sort и индексы vs значения в argsort
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе есть сломанный код. В нём допущены ровно три ошибки в трёх независимых строках:
- Первый вызов
np.sortиспользуетaxis=1, хотя нужно отсортировать каждый столбец по возрастанию (то есть нуженaxis=0). - Второй вызов
np.sortиспользуетaxis=0, хотя нужно отсортировать каждую строку по возрастанию (то есть нуженaxis=1). - Вместо применения результата
np.argsortк исходному массиву через fancy indexing код выводит сами индексыidxвместо переставленных значенийvals[idx].
Каждая ошибка — в отдельной строке. Исправьте ровно три строки.
Что нужно сделать
Исправьте три ошибочные строки так, чтобы программа:
- Читала из
stdinдва целых числаRиC. - Читала следующие
Rстрок поCцелых чисел — двумерный массивMформы(R, C). - Читала ещё одну строку с
Cцелыми числами — одномерный массивvalsдлиныC. - Вычисляла
col_sorted = np.sort(M, axis=0)— каждый столбецMотсортирован по возрастанию, shape(R, C). - Вычисляла
row_sorted = np.sort(M, axis=1)— каждая строкаMотсортирована по возрастанию, shape(R, C). - Вычисляла
idx = np.argsort(vals)и выводилаvals[idx]— значенияvalsв отсортированном порядке. - Выводила в
stdoutровно три блока:
- строка
col_sorted shape=(R, C), затемRстрок матрицыcol_sorted; - строка
row_sorted shape=(R, C), затемRстрок матрицыrow_sorted; - строка
vals sorted: <значения через пробел>.
Ввод и вывод
Программа читает 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}
vals_0 vals_1 ... vals_{C-1}
Формат вывода
col_sorted shape=(R, C)
<строки col_sorted через пробел>
row_sorted shape=(R, C)
<строки row_sorted через пробел>
vals sorted: vals_sorted_0 vals_sorted_1 ...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
3 3 3 1 4 1 5 2 6 3 8 9 2 7
Ожидаемый выводcol_sorted shape=(3, 3) 1 1 2 3 3 4 6 5 8 row_sorted shape=(3, 3) 1 3 4 1 2 5 3 6 8 vals sorted: 2 7 9
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
