Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Matrix:
- def __init__(self,body,n_rows,m_columns): #принимает список ,количество строк и столбцов
- self.body=body
- self.n_r=n_rows
- self.m_c=m_columns
- def __add__(self,matrix):
- g=[]
- if self.n_r==matrix.n_r and self.m_c==matrix.m_c:
- for i in range(len(self.body)):
- g.append(self.body[i]+matrix.body[i])
- return Matrix(g,self.n_r,self.m_c)
- def __mul__(self,arg):
- if type(arg)==int or type(arg)==float:
- new_body=[]
- for i in self.body:
- o=i*arg
- new_body.append(o)
- return Matrix(new_body,self.n_r,self.m_c)
- elif type(arg)==Matrix and self.m_c==arg.n_r:
- o=[]
- m=[]
- f=[]
- j=0
- k=0
- while j!=len(self.body) :
- i=self.body[j:j+self.m_c]
- o.append(i)
- j+=self.m_c
- while k!=arg.m_c :
- s=arg.body[k::arg.m_c]
- m.append(s)
- k+=1
- sum_all=0
- for lm in o:
- d=0
- while d!=len(m):
- sum_all=0
- for i in range(0,len(lm)):
- sum_all+=lm[i]*m[d][i]
- f.append(sum_all)
- d+=1
- return Matrix(f,self.n_r,arg.m_c)
- def __sub__(self,arg):
- return Matrix((self+(arg*(-1))).body,self.n_r,self.m_c)
- def trace(self):
- if self.n_r==self.m_c:
- sum_all=0
- for i in range(0,self.m_c):
- sum_all+=(self.body[i*self.m_c+i])
- return sum_all
- def transpose(self):
- m=[]
- k=0
- while k!=self.m_c :
- s=self.body[k::self.m_c]
- m.append(s)
- k+=1
- return Matrix(m,self.m_c,self.n_r)
- def __getitem__(self,key):
- return self.body[self.m_c*(key[0]-1)+key[1]-1]
- def __setitem__(self,key,value):
- self.body[self.m_c*(key[0]-1)+key[1]-1]=value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement