在本论文的例子中,论述了Python实现的矩阵置换和矩阵乘法。 共享仅供参考。 具体如下。
矩阵置换
wgdmg :使用通常的想法deftranspose(m ) :
#初始化后的矩阵
result=[]
#获取替换前的行和列
row,col=shape(m ) )。
#首先循环列
forIinrange(col ) :
#外层循环的容器
item=[]
在#列循环内部进行行循环
forindexinrange(row ) :
item.append(m[index][I] )。
result.append(item )
返回结果
思路:矩阵转置是指由行变列。 在列成为行之前最终定义存储矩阵的容器,然后循环I列,定义存储数据的临时数组。 在各列的循环内部,再次循环j行,将第M[j][i]个要素存储在一个临时数组中,各列的循环完成,将临时数组存储在最终数组中,列的循环完成,最终数组为矩阵的倒置
用lmdyx:zip解包deftranspose(m ) :
直接使用zip分解为转置的元组反复器,再强烈地变换为list并收纳到最终的list中
return[list(row ) forrowinzip ) *m]
构想:
解包zip后,返回将多个可重复对象组成一个元组数组的迭代器。 示例: my_zip=list(zip ) (a )、b )、c )、) 1、2、3 ) )
print(my_zip ) )、1 )、b )、2 )、c )、3 ) ]
在每个循环中将元组强烈转换为list,并容纳在总list中
矩阵乘法defmatrixmultiply(a,b ) :
获取#a的行数和列数
A_row,A_col=shape(A )
获取#b的行数和列数
B_row,b_col=shape(b ) ) )。
#无法运算时的判断
if(a_col!=b_row(:
raise ValueError
#最终矩阵
result=[]
# zip解包后是转置的元组,强制变换为list,存储在result中
Bt=[list(row ) forrowinzip(*b ) ]
开始#乘积运算
fora_indexinrange(a_row ) :
#用于记录新矩阵的每行元素
rowItem=[]
forb_indexinrange(Len(Bt ) ) :
# num为累计用
num=0
forbrinrange(Len ) Bt[b_index] ) :
num=a [ a _ index ] [ br ] * Bt [ b _ index ] [ br ]
#增量完成后,将数据存储在新矩阵的行中
rowItem.append(num )
result.append(rowitem ) )。
返回结果
说明:将a矩阵和b矩阵相乘,最终得到新的矩阵x。 想法首先是判断是否能做乘法。 前提条件是a列和b行相同。 假设a是3行5列,b是5行2列,乘法运算的结果是用3行2列置换b,变成2行5列。 这叫做BT。 这样,如果a和BT都是5列的话,将a各行的第I个要素* BT各行的第I个要素、构成新矩阵x的新行、循环a的行共计3行相加的话,新矩阵x就会慢慢追加新行,循环结束后得到新的矩阵x
对Python相关内容感兴趣的读者请参考本网站的专题文章,《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、0103010、0103010
希望本文能对大家的Python编程有所帮助。