NumPy A.T @ A: попарные скалярные произведения столбцов
A.T @ A: попарные скалярные произведения столбцов матрицы
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinдва целых числаRиC— число строк и столбцов матрицы. - Читает следующие
Rстрок; каждая содержит ровноCвещественных чисел через пробел. Создаёт двумерный массивAчерезnp.array(..., dtype=float)формы(R, C). - Вычисляет
G = A.T @ Aоператором@. ЗдесьA.Tимеет форму(C, R), поэтомуGимеет форму(C, C): каждый элементG[i, j]— это сумма попарных произведенийi-го иj-го столбцовA, то есть их скалярное произведение. - Выводит в
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]
Каждое число выводится с ровно двумя знаками после запятой.
Пример
- Ввод
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
РешениеPython
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Умножение матриц NumPy: оператор @, размеры и пример
- dtype NumPy: целые и вещественные массивы, типы элементов
- NumPy shape, ndim, size и dtype: атрибуты массива и задача
- Срезы двумерного массива NumPy: строки, столбцы и шаг
- NumPy reshape и transpose: разница на примере и задача
- NumPy newaxis и squeeze: вектор-строка и вектор-столбец
