python 矩阵乘法,,1.列表作为数据结构


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 temp2print(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 npdef 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 npdef 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]]))

python 矩阵乘法

评论关闭