python实现矩阵运算

1.给定整数类型的mate1(m行d列)和mate2(d行n列),返回矩阵相乘后的结果
m×n矩阵。矩阵均用二维列表表示。

def matrx_mutiple(mate1,mate2):
    m=len(mate1)
    n=len(mate2[0])
    res=[[0]*n for i in range(m)]
    for i in range(m):
        for j in range(n):
            sum=0
            for k in range(len(mate1[0])):
                sum+=mate1[i][k]*mate2[k][j]
            res[i][j]=sum
    return res

测试用例:
mate1=[[1,2],[1,3]]
mate2=[[1,1],[1,0]]
print(matrx_mutiple(mate1,mate2))
>>>[[3, 1], [4, 1]]

2.实现矩阵的转置

1.zip()
a=[[1,2,3],[4,5,6]]
>>>list(zip(*a))# *号进行解包
>[[1,4],[2,5],[3,6]]

2.列表推导式
a=[[1,2,3],[4,5,6]]
>>>[[martx[i][j] for i in range(len(a)) ] for j in range(len(a[0]))]

3.矩阵按照对角线转置
在这里插入图片描述

def fun4(lst):
	m=len(lst)
	#xind和yind分别是新矩阵每行开头元素的横纵坐标
	xind=[i for i in range(m)]
	xind.extend([m-1 for i in range(m-1)])
	yind=[0 for i in range(m)]
	yind=[i for i in range(1,m)]
	#>>>xind=[0,1,2,2,2]
	#>>>yind=[0,0,0,1,2]
	ans=[[0]*m for i in range(2*m-1)]#结果矩阵初始化
	for i in range(len(xind)):
		x,y=xind[i],yind[i]
		j=0
		while True:
			ans[i][j] = lst[x][y]
			x-=1#行号应该减小
			y+=1#列号增加
			j+=1
			if x<0 or y>=m:#越界就跳出循环
				break
	return ans

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值