Python计算矩阵相乘

来源:互联网 发布:淘宝搜索流量下降 编辑:程序博客网 时间:2024/05/21 16:22

《Python学习手册-第3版》中提到python可以进行复杂的数学计算,甚至堪比MATLAB,随便写了一个矩阵相乘计算的本来应该要导入numpy这个模块的,但一直在windows下没有弄好,暂时就木有导入强大的模块功能了,苦逼的只能自己写矩阵相乘……

这里写的是一般通用的(m*n)×(n*k)矩阵相乘,这里的m*n代表m行n列矩阵,我们知道,矩阵相乘这里的n是一定要相同的!由于python的特性,还写出了两种不一样的算法哦!O(∩_∩)O哈哈~直接上代码:

#coding:utf-8# 矩阵相乘计算   M*N=R# @author : hejiao # @date : 2015-08-27M = [[1,1,1],[1,1,1],[1,1,1],[1,1,1]]N = [[1,1],[1,1],[1,1]]R = [[0,0],[0,0],[0,0],[0,0]]for i in range(len(M)):    for j in range(2):        sum = 0        for k in range(len(N)):            sum += M[i][k]*N[k][j]        R[i][j] = sumprint R# Result is [[3,3],[3,3],[3,3],[3,3]]

可惜的是目前还不知道怎么得到矩阵的列数,所以在j循环时只能硬编码成2,然后就是列表添加数据简单的添加就是append,但是复杂的二维的数据添加暂时还不知道,所以就初始化了,等以后知道了再来修改吧!第二种是利用的python可以获得矩阵的一列数据[row[1] for row in N]可以得到一列数据,例如:N = [[1,2],[3,4],[5,6]],则[row[1] for row in N]就是[2,4,6]了,代码如下:

M = [[1,1,1],[1,1,1],[1,1,1],[1,1,1]]N = [[1,1],[1,1],[1,1]]R = [[0,0],[0,0],[0,0],[0,0]] #初始化for i in range(len(M)):    for j in range(2):        a = M[i]        b = [row[j] for row in N]        sum = 0        for k in range(len(N)):            sum += a[k]*b[k]        R[i][j] = sumprint R


0 0
原创粉丝点击