zoukankan      html  css  js  c++  java
  • python 矩阵乘法

    1.列表作为数据结构

    def MatrixProduct(a, b):
        temp2 = []
        for i in range(len(a)):         
            temp1 = []
            for j in range(len(b[0])):
                total = 0            
                for k in range(len(a[0])):
                    total += a[i][k] * b[k][j]
                temp1.append(total)
            temp2.append(temp1)
        return temp2
    
    print(MatrixProduct([[1,0],[0,0]], [[0,1],[1,0]]))

    时间复杂度太高O(n^3)

    以后再想办法用矩阵快速幂来优化,降低时间复杂度

    2.numpy中ndarray作为数据结构

    (注意numpy数组的a*b指的并不是矩阵乘法,a.dot(b)或者numpy.dot(a,b))

    import numpy as np
    
    def MatrixProduct(a, b):
        a=np.array(a)
        b=np.array(b)
        c=np.dot(a,b)
        return c.tolist()
    
    print(MatrixProduct([[1,0],[0,0]], [[0,1],[1,0]]))

    3.numpy中mat作为数据结构

    这种矩阵格式就可以a*b了

    import numpy as np
    
    def MatrixProduct(a, b):
        a=np.mat(a)
        b=np.mat(b)
        c=a*b
        return c.tolist()
    
    print(MatrixProduct([[1,0],[0,0]], [[0,1],[1,0]]))
    
  • 相关阅读:
    MySQL客户端mysqladmin命令
    13 Linux磁盘管理
    12 Linux软件管理
    11 Linux压缩打包
    09 Linux输入输出
    08 LinuxACL控制
    07 Linux特殊权限
    06 Linux基本权限
    05 Linux用户管理
    04 Linux文件编辑
  • 原文地址:https://www.cnblogs.com/yongestcat/p/13156077.html
Copyright © 2011-2022 走看看