2016-02-04 11 views
0

Как добавить матрицы (список списков) в python? Я знаю, что я могу это сделать:Как добавить матрицы в python

X = [[12,7,3], 
    [4 ,5,6], 
    [7 ,8,9]] 

Y = [[5,8,1], 
    [6,7,3], 
    [4,5,9]] 

result = [[0,0,0], 
     [0,0,0], 
     [0,0,0]] 

# iterate through rows 
for i in range(len(X)): 
    # iterate through columns 
    for j in range(len(X[0])): 
     result[i][j] = X[i][j] + Y[i][j] 

for r in result: 
    print(r) 

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

+2

Есть причина, вы не можете использовать 'numpy' для этого? – Akavall

+0

, если A является матрицей n × m, а B является матрицей m × p, их матричное произведение AB является матрицей n × p. https://en.wikipedia.org/wiki/Matrix_multiplication –

+0

Используя numpy, матричное умножение может быть выполнено даже с использованием обычных операторов умножения, абсолютно никакой необходимости в этом беспорядке ... –

ответ

1

Сделайте проверку размера, а затем создайте результат непосредственно с пониманием вложенного списка. Ноутбук лучше, но если вы хотите избежать импорта, это будет делать.

X = [[12,7,3], 
    [4 ,5,6], 
    [7 ,8,9]] 

Y = [[5,8,1], 
    [6,7,3], 
    [4,5,9]] 

if len(X) == len(Y) and len(X[0]) == len(Y[0]): 
    result = [[X[i][j] + Y[i][j] for j in range(len(X[0]))] 
       for i in range(len(X))] 

print result 

Выход:

[[17, 15, 4], [10, 12, 9], [11, 13, 18]] 
+0

приведенный выше код выдает ошибку, если dims не совпадают, правильно? –

+1

Только потому, что ** результат ** не определен. Чтобы создать правильное исключение, добавьте предложение ** else ** по вашему выбору. – Prune

Смежные вопросы