简单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

浙公网安备 33010602011771号