简单4:矩阵相乘

题目:

牛牛现在有一个矩阵

 

​需要将其深拷贝到另一个矩阵Y中,然后对矩阵Y的每个元素加1,最后输出X*Y的结果(直接输出列表即可)。

矩阵乘法:用左边矩阵的行向量,与右边矩阵的列向量求内积(对应元素相乘后相加)得到新矩阵相应行列位置的元素。

输入描述:

输出描述:

[[168, 23, 34], [71, 49, 2], [55, -28, 67]]

 

#1.首先定义一个列表相乘的函数a=[1,2,3],b=[1,2,3],mul(a,b)=14

def mul(a,b):

    count = 0

    for  i in range(len(a)):

            count += a[i]*b[i]

    return count

 

#2.定义转置矩阵,a=[[1,2],[3,4]],作用后为[(1,3),(2,4)]

def transformMatrix(m):

    # 逆向参数收集,将矩阵中多个列表转换成多个参数,传给 zip

    return list(zip(*m))

 

#3.定义矩阵相乘函数

def chen(X,Y):

    for i in range(0,m):

        for j in range(0,n):

           Z[i][j] = mul(X[i],Y[j])

    return Z

 

X=[[13,-1,4],

    [5,0,6],

   [1,9,-3]]

m,n = len(X),len(X[0])

Z = [[0]*n for i in range(m)] #初始化

Y =  [[0]*n for i in range(m)] #初始化

for i in range(m):

    for j in range(n):

        Y[i][j] = X[i][j]+1

Y = transformMatrix(Y)

print(chen(X,Y))

 

注意:本题未使用除python自身外的函数,若使用numpy中dot函数更加方便。

参考:

Numpy库dot函数使用:https://blog.csdn.net/qq_44911774/article/details/107671194

矩阵转置使用:https://blog.csdn.net/qq_36512295/article/details/94210180

 

posted @ 2022-07-23 13:15  萧六弟  阅读(511)  评论(0)    收藏  举报