继续以迭代方式添加矩阵

时间:2016-01-26 10:38:30

标签: python

我有一个看起来像这样的代码。 (请没有numpy相关的帮助...对不起)

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

empty = [[0,0,0],
         [0,0,0],
         [0,0,0]]


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

Final = [[0,0,0],
         [0,0,0],
         [0,0,0]]



for i in range(len(X)):
    for j in range(len(X)):
            result[i][j] = X[i][j] + empty[i][j]
            Final[i][j]=X[i][j] + result[i][j]


for r in Final: 
    print(r)

基本上,我想首先添加一个带有空矩阵的X矩阵,然后将该矩阵存储在同一维度的其他矩阵中,然后继续向其添加X,直到我想要任意数量的迭代。最终,我如何改变最终矩阵将给出与X具有相同维度的矩阵的结果的部分,但是元素将被添加到X矩阵中的每个元素的值?我希望我的问题很清楚。如有任何进一步的澄清,请不要犹豫,敲我。 :)

2 个答案:

答案 0 :(得分:1)

出于您的目的,您最好使用numpy包中的数组。这将允许您直接将矩阵添加到一起,而不是元素。例如:

import numpy as np

x = np.array([[1,2,3],
             [4, 5, 6],
             [7, 8, 9]])

y = np.array([[1,2,3],
             [4, 5, 6],
             [7, 8, 9]])

z = x + y
print(z)

<强>输出

[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]

答案 1 :(得分:1)

你可以zip矩阵的行,然后压缩行的元素并将它们加在一起:

def add_matrix(a, b):
    return [[aij + bij for (aij, bij) in zip(ai, bi)]
             for (ai, bi) in zip(a, b)]

您可以像以下一样使用它:

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

result = add_matrix(X, X)

for row in result:
    print(row)

输出:

[24, 14, 6]
[8, 10, 12]
[14, 16, 18]