zoukankan      html  css  js  c++  java
  • 算法导论_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 '''
  • 相关阅读:
    阐述:SIP协议是什么
    【SIP协议】学习初学笔记
    【协议学习】SIP基本场景分析
    电话的前世今生
    深入浅出SIP协议
    QVariant类及QVariant与自定义数据类型转换的方法
    Qt中如何根据类名来实例化对象
    模板的全特化与偏特化
    为什么c++中,有时可以用类名直接访问非静态成员函数?
    C++引用详解
  • 原文地址:https://www.cnblogs.com/lyj0123/p/13304286.html
Copyright © 2011-2022 走看看