📜  Python程序添加两个矩阵

📅  最后修改于: 2022-05-13 01:55:42.002000             🧑  作者: Mango

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中通过以下方式执行矩阵加法。

  1. 使用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])),因为我们使用的是额外空间的结果矩阵。

另一种方法:

  1. 解释 :-
    在这个程序中,我们使用了嵌套的 for 循环来遍历每一行和每一列。在每一点,我们将两个矩阵中的相应元素相加并将其存储在结果中。
  2. 使用嵌套列表推导在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])),因为我们使用的是额外空间的结果矩阵。

另一种方法:

  1. 解释:-
    该程序的输出与上述相同。我们使用嵌套列表推导来遍历矩阵中的每个元素。列表理解允许我们编写简洁的代码,我们必须尝试在Python中经常使用它们。他们非常有帮助。
  2. 使用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() 添加它们并将它们存储在映射形式中。