Python计算矩阵相乘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012885111/article/details/48031073

《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-27
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):
        sum = 0
        for k in range(len(N)):
            sum += M[i][k]*N[k][j]
        R[i][j] = sum
print 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] = sum
print R


展开阅读全文

没有更多推荐了,返回首页