Задача курса

Min-max нормализация матрицы NumPy и argmin/argmax

Курс «NumPy и pandas: практический тренажёр» · урок «Агрегации по массиву и по оси: sum, mean, min, max, argmin, argmax»

Условие

Min-max нормализация матрицы и позиции глобальных экстремумов

Что уже дано

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

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

Напишите программу, которая выполняет глобальную min-max нормализацию двумерного массива:

  1. Читает из stdin два целых числа R и C — количество строк и столбцов.
  2. Читает следующие R строк; каждая содержит C целых чисел через пробел. Создаёт двумерный массив arr через np.array(..., dtype=float) формы (R, C).
  3. Вычисляет скалярный глобальный минимум g_min = np.min(arr) и скалярный глобальный максимум g_max = np.max(arr) без параметра axis.
  4. Вычисляет нормализованный массив normed по формуле поэлементной арифметики:
normed = (arr - g_min) / (g_max - g_min)

Гарантируется, что все элементы матрицы не одинаковы, поэтому g_max - g_min > 0.
5. Вычисляет глобальный flat_argmin = np.argmin(arr) и flat_argmax = np.argmax(arr) без параметра axis — позиции в развёрнутом (flattened) массиве.
6. Выводит в stdout ровно три блока:

Блок 1. Нормализованный массив normed: каждая строка массива выводится на отдельной строке, значения через пробел, округлённые до 4 знаков после запятой (round(x, 4) для каждого элемента).

Блок 2. Одна строка: g_min g_max — глобальный минимум и максимум исходного массива (целые числа, без дробной части).

Блок 3. Одна строка: flat_argmin flat_argmax — позиции экстремумов в развёрнутом массиве.

Ввод и вывод

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

Формат ввода

R C
a00 a01 ... a0(C-1)
...
a(R-1)0 ... a(R-1)(C-1)

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

normed[0][0] normed[0][1] ... normed[0][C-1]
...
normed[R-1][0] ... normed[R-1][C-1]
g_min g_max
flat_argmin flat_argmax

Всего R + 2 строк. Значения normed округлены до 4 знаков после запятой. g_min и g_max — целые числа (без дробной части). flat_argmin и flat_argmax — целые числа.

Примеры

Пример 1

Ввод
3 3
3 1 4
1 5 9
2 6 5
Ожидаемый результат
0.25 0.0 0.375
0.0 0.5 1.0
0.125 0.625 0.5
1 9
1 5

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется