我正在尝试为我的作业创建一个python类。我们必须设计一个自定义类处理矩阵。
现在我对编程很新,但是我得到的主要问题是乘以两个矩阵。我无法让我的类实际上将行与多个列相乘,因为我试图仅使用1个列表而不是数组来解决此分配。
我已经搜索过但看起来似乎无法找到答案。我不能使用numpy并且想看看它是否可以仅使用1个列表来描述矩阵。
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)<n*m:
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更改为另一列,但仍然保持同一列,因为我仍然需要使用它:S?
希望它看起来不可怕。
关于如何解决这个问题的任何想法?