2016-02-04 92 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

进行大小检查,然后直接使用双嵌套列表理解来生成结果。 Numpy更好,但如果你想避免导入,这会做。

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