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

Матрично-векторные произведения через оператор @

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

A.T @ A: попарные скалярные произведения столбцов матрицы

Что уже дано

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

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

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

  1. Читает из stdin два целых числа R и C — число строк и столбцов матрицы.
  2. Читает следующие R строк; каждая содержит ровно C вещественных чисел через пробел. Создаёт двумерный массив A через np.array(..., dtype=float) формы (R, C).
  3. Вычисляет G = A.T @ A оператором @. Здесь A.T имеет форму (C, R), поэтому G имеет форму (C, C): каждый элемент G[i, j] — это сумма попарных произведений i-го и j-го столбцов A, то есть их скалярное произведение.
  4. Выводит в stdout ровно четыре строки:
  • Строка 1: A.shape и G.shape через пробел в виде (R, C) (C, C).
  • Строка 2: значение элемента G[0, 0] в формате %.2f — скалярное произведение первого столбца A с собой.
  • Строка 3: значение элемента G[-1, -1] в формате %.2f — скалярное произведение последнего столбца A с собой.
  • Строка 4: значения элементов первой строки матрицы G через пробел в формате %.2f.

Ввод и вывод

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

Формат ввода

R C
A[0][0] ... A[0][C-1]
...
A[R-1][0] ... A[R-1][C-1]

Гарантируется R >= 2, C >= 2.

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

(R, C) (C, C)
G[0,0]
G[-1,-1]
G[0,0] G[0,1] ... G[0,C-1]

Каждое число выводится с ровно двумя знаками после запятой.

О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    3 2
    1.0 2.0
    3.0 4.0
    5.0 6.0
    
    Ожидаемый вывод
    (3, 2) (2, 2)
    35.00
    56.00
    35.00 44.00
    
Решение
Как проверяется решение

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

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