python 矩阵乘法

Posted 九命猫幺的笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]]))

以上是关于python 矩阵乘法的主要内容,如果未能解决你的问题,请参考以下文章

Python+CUDA三种方式实现,用矩阵乘法举例

矩阵乘法运行时间 Python < C++ < Matlab - 解释

矩阵乘法中每个单元格的平均值,而不仅仅是 python 中的总和

python实现简单的并行矩阵乘法

Python进行矩阵的乘法运算

[使用Python,NumPy,SciPy使用矩阵乘法对矩阵进行有效切片