我正在为我的作业创建一个python类。我们必须设计一个自定义的类处理矩阵。在
现在我对编程很陌生,但是这个赋值的主要问题是要把两个矩阵相乘。我不能让我的类用一个以上的列来实实在在地将行相乘,因为我试图只使用1个列表而不是数组来解决这个赋值问题。在
我找了又找,但似乎找不到答案。我不能使用numpy,我想看看是否可以只用一个列表来描述矩阵。在class simplematrix(object):
def __init__(self,n=0,m=0,values=list()):
self.matrix = []
for x in values:
self.matrix.append(x)
if self.matrix == []:
while len(self.matrix)
self.matrix.append(0)
if n*m != len(self.matrix):
raise ValueError('Length of values is different from length of matrix')
self.n = n
self.m = m
def __str__(self):
a = ''
if self.matrix == []:
for x in range(self.n):
a += '\n'
for y in range(self.m):
a += ' '+str(0)
else:
for x in range(self.n):
a += '\n'
for y in range(self.m):
a += ' '+str(self.matrix[y+x*self.m])
return a
def __add__(self,other):
if self.n != other.n or self.m != other.m:
raise ValueError('Matrices have different sizes.')
ans_val = []
for x in range(len(self.matrix)):
ans_val.append(self.matrix[x]+other.matrix[x])
ans = simplematrix(self.n,self.m,ans_val)
return ans
def __mul__(self,other):
if self.m != other.n:
raise ValueError('Matrices have incorrect sizes.')
ans = simplematrix(other.n,self.m)#WTF WTF WTF WTF
for y in range(self.m):
a = self.get_row(y)
b = other.get_col(y)
c = 0
for z in range(len(a)):
c += a[z]*b[z]
ans.matrix[y*self.m] = c
我似乎想不出该怎么走得更远。这只计算产品矩阵的第一列。我不确定如何才能将b改为另一列,但仍然保持a为同一列,因为我仍然需要使用它:S?在
希望看起来不那么可怕。在
有什么办法解决这个问题吗?在