【问题标题】:Python matrix multiplication - result matrix sizePython矩阵乘法 - 结果矩阵大小
【发布时间】:2019-11-21 20:42:55
【问题描述】:
我正在尝试在 Python 中为矩阵乘法创建乘积矩阵,但我不确定矩阵的大小,因为用户可以为矩阵乘法提供任何输入。
当提供实际矩阵大小时,我已经在之前的矩阵任务中使用这个来处理这种情况
product_matrix = [[col for col in range(4)] for row in range(4)]
但我不确定在这种情况下如何解决它。
【问题讨论】:
标签:
python
matrix
multiplication
【解决方案1】:
对于x = range(len(B[0])),您的意思是x = len(B[0])吗?
通过将A * B 相乘,得到的矩阵result 应具有A 的num_raw 和B 的num_col。
x = len(B[0]) 表示您的x 正在计算B 的每一行有多少个元素,即x 是num_col 的B。 len(A) 正在计算A 中有多少行,即len(A) 是num_row 的A。因此,您的result 被初始化为“每一行都有x 元素,并且有len(A) 行”,所有条目均为0。
您提供的第二行应该在一个 for 循环中,这与您手动计算结果矩阵的每个条目的方式完全相同。
【解决方案2】:
def inMatrix(m,n):#function For Multiplication And Pass Row and col number as Parameter
a=[]#Blank Matrix
for i in range(m):#Row
b=[]#Blank List
for j in range(n):#col
j=int(input("Enter Matrix Elements in pocket ["+str(i)+"]["+str(j)+"]"))
b.append(j)#add element to list
a.append(b)#add List to Matrix
return a #return Matrix
def priMatrix(a):#function for Print Matrix
for i in range(len(a)): #row
for j in range(len(a[0])):#col
print(a[i][j],end=" ") #print Number with space
print()#print line for New row
def multply(a,b):#Multiplication function Pass two Matrix as Parameter
mul=[] #Blank Matrix
sum=0#sum With ) Value
for i in range(len(a)):#row
l=[] #Blank list
for j in range(len(a[0])):#col
for k in range(len(b)):#select
sum=sum+a[i][k]*b[k][j]#sum with Mul
l.append(sum)#add Mul Value
sum=0#Sum 0 For Next Calculation
mul.append(l)#Add List
return mul #return Multiplication Matrix
m=int(input("row"))#First Matrix Row
n=int(input("col"))#First Matrix Col
a=inMatrix(m,n)#First Matrix input
j=int(input("row"))#second Matrix Row
k=int(input("col"))#second Matrix Col
b=inMatrix(j,k)#Second Matrix Input
priMatrix(a)#First Matrix Print
priMatrix(b)#second Matrix Print
c=multply(a,b)#Multiplication Matrix Function Call
priMatrix(c)#Multiplication Matrix Print