Произведение матриц Python
Заданы две целочисленные матрицы A и B. Матрица A состоит из N строк и M столбцов, Матрица B состоит из M строк и P столбцов. Требуется вычислить произведение данных матриц AB. Входные данные Первая строка входного файла INPUT.TXT содержит три натуральных числа N, M и P. Далее следует описание матриц A и B. Матрица A состоит из N строк по M целых чисел. Матрица B состоит из M строк по P чисел. Матрицы отделены друг от друга пустой строкой. Все числа во входных данных не превышают 100 по абсолютной величине. Выходные данные В выходной файл OUTPUT.TXT выведите матрицу, полученную в результате произведения AB.
Мой код:
n, m, p = map(int, input().split())
X = [list(map(int, input().split())) for i in range(n)]
input()
Y = [list(map(int, input().split())) for j in range(m)]
result = [[sum(a * b for a, b in zip(X_row, Y_col)) for Y_col in zip(*Y)] for X_row in X]
for i in range(m):
for j in range(p):
print(result[i][j], end=' ')
print()
Тестовые данные для ввода: размерности 2 2 3
Матрица А
2 3
-1 4
Матрица Б
2 -3 4
3 1 0
Вывод:
13 -3 8
10 7 -4
Не могу найти решение для матриц разного размера, 2х2 на 2х3
Ответы (1 шт):
При перемножении матриц указанных размеров получается матрица n x p.
Так что достаточно исправить при выводе
for i in range(n):
и код будет работать с любыми размерами
Если не использовать никаких питоновских штучек, кроме задания результирующей матрицы (так что циклы будут выглядеть так же в большинстве языков):
c = [[0]*p for _ in range(n)]
for i in range(n):
for j in range(p):
for k in range(m):
c[i][j] += X[i][k] * Y[k][j]