Python计算矩阵相乘

《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


  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值