Python程序添加两个矩阵
目标: 计算两个矩阵之和然后用Python打印出来的程序。
例子:
Input :
X= [[1,2,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[9,8,7],
[6,5,4],
[3,2,1]]
Output :
result= [[10,10,10],
[10,10,10],
[10,10,10]]
我们可以在Python中通过以下方式执行矩阵加法。
- 使用for 循环:
Python
# Program to add two matrices using nested loop
X = [[1,2,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[9,8,7],
[6,5,4],
[3,2,1]]
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)
Python
# Program to add two matrices
# using list comprehension
X = [[1,2,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[9,8,7],
[6,5,4],
[3,2,1]]
result = [[X[i][j] + Y[i][j] for j in range
(len(X[0]))] for i in range(len(X))]
for r in result:
print(r)
Python
# Program to add two matrices
# using zip()
X = [[1,2,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[9,8,7],
[6,5,4],
[3,2,1]]
result = [map(sum, zip(*t)) for t in zip(X, Y)]
print(result)
输出:
[10, 10, 10]
[10, 10, 10]
[10, 10, 10]
时间复杂度: O(len(X) * len(X[0])),因为我们使用嵌套循环遍历矩阵。
辅助空间: O(len(X) * len(X[0])),因为我们使用的是额外空间的结果矩阵。
另一种方法:
- 解释 :-
在这个程序中,我们使用了嵌套的 for 循环来遍历每一行和每一列。在每一点,我们将两个矩阵中的相应元素相加并将其存储在结果中。 - 使用嵌套列表推导:在Python中,我们可以将矩阵实现为嵌套列表(列表中的列表)。我们可以将每个元素视为矩阵的一行。
Python
# Program to add two matrices
# using list comprehension
X = [[1,2,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[9,8,7],
[6,5,4],
[3,2,1]]
result = [[X[i][j] + Y[i][j] for j in range
(len(X[0]))] for i in range(len(X))]
for r in result:
print(r)
输出:
[10, 10, 10]
[10, 10, 10]
[10, 10, 10]
时间复杂度: O(len(X) * len(X[0])),因为我们使用嵌套循环遍历矩阵。
辅助空间: O(len(X) * len(X[0])),因为我们使用的是额外空间的结果矩阵。
另一种方法:
- 解释:-
该程序的输出与上述相同。我们使用嵌套列表推导来遍历矩阵中的每个元素。列表理解允许我们编写简洁的代码,我们必须尝试在Python中经常使用它们。他们非常有帮助。 - 使用zip()和 sum
Python
# Program to add two matrices
# using zip()
X = [[1,2,3],
[4 ,5,6],
[7 ,8,9]]
Y = [[9,8,7],
[6,5,4],
[3,2,1]]
result = [map(sum, zip(*t)) for t in zip(X, Y)]
print(result)
输出:
[[10, 10, 10], [10, 10, 10], [10, 10, 10]]
时间复杂度: O(len(X) * len(X[0])),因为我们使用的是 zip函数。
辅助空间: O(len(X) * len(X[0])),因为我们使用了额外的空间。
解释 :-
zip函数接受矩阵的每个元素(列表)的迭代器 i,映射它们,使用 sum() 添加它们并将它们存储在映射形式中。