算法导论_P43_矩阵相乘

 1 ### 按二维数组格式进行输出二维数组
 2 def arr2_print(arr):
 3     for i in range(len(arr)):
 4         if i == 0:
 5             print("[",arr[i])
 6         elif i == len(arr)-1:
 7             print(" ",arr[i],"]")
 8         else:
 9             print(" ",arr[i])
10     return
11 ### 实现矩阵相乘
12 def square_matrix_multiply(arr_1,arr_2):
13     # 构建存储矩阵乘法结果的二维数组,并将数据初始化为 0,维度: arr_1 的行数  X  arr_2 的列数
14     arr_3 = [  [0 for j in range(len(arr_1))] for i in range(len(arr_2[0])) ]
15     for i in range(len(arr_1)):             # len(arr_1)    arr_1  行数
16         for j in range(len(arr_2[0])):      # len(arr_2[0]) arr_2  列数
17             # arr_1 的列 和 arr_2 的行 相同,为计算结果矩阵中一个元素时所需要的乘法次数
18             for k in range(len(arr_1[0])):
19                 arr_3[i][j] = arr_3[i][j] + arr_1[i][k] * arr_2[k][j]
20     return arr_3
21 
22 if __name__ == '__main__':
23     arr_1 = [[1,2,3],[4,5,6]]
24     arr_2 = [[1,4],[2,5],[3,6]]
25     arr_3 = square_matrix_multiply(arr_1,arr_2)
26     # print("矩阵1:
",arr_1,"
矩阵2:
",arr_2,"
二者矩阵相乘结果为:",arr_3)
27     print("矩阵1:")
28     arr2_print(arr_1)
29     print("矩阵2:")
30     arr2_print(arr_2)
31     print("二者矩阵相乘结果为:")
32     arr2_print(arr_3)
33 ''' 运行结果:
34 矩阵1:
35 [ [1, 2, 3]
36   [4, 5, 6] ]
37 矩阵2:
38 [ [1, 4]
39   [2, 5]
40   [3, 6] ]
41 二者矩阵相乘结果为:
42 [ [14, 32]
43   [32, 77] ]
44 '''
原文地址:https://www.cnblogs.com/lyj0123/p/13304286.html