Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.18 KB | None | 0 0
  1. class Matrix:
  2.  
  3.     def __init__(self,body,n_rows,m_columns):   #принимает список ,количество строк и столбцов
  4.         self.body=body
  5.         self.n_r=n_rows
  6.         self.m_c=m_columns
  7.  
  8.     def __add__(self,matrix):
  9.         g=[]
  10.         if self.n_r==matrix.n_r and self.m_c==matrix.m_c:
  11.             for i in range(len(self.body)):
  12.                 g.append(self.body[i]+matrix.body[i])  
  13.             return Matrix(g,self.n_r,self.m_c)
  14.      
  15.     def __mul__(self,arg):
  16.         if type(arg)==int or type(arg)==float:
  17.             new_body=[]
  18.             for i in self.body:
  19.                 o=i*arg
  20.                 new_body.append(o)
  21.             return Matrix(new_body,self.n_r,self.m_c)
  22.  
  23.         elif type(arg)==Matrix and self.m_c==arg.n_r:
  24.             o=[]
  25.             m=[]
  26.             f=[]
  27.             j=0
  28.             k=0
  29.             while j!=len(self.body) :
  30.                 i=self.body[j:j+self.m_c]
  31.                 o.append(i)
  32.                 j+=self.m_c
  33.             while k!=arg.m_c :
  34.                 s=arg.body[k::arg.m_c]
  35.                 m.append(s)
  36.                 k+=1
  37.             sum_all=0
  38.            
  39.             for lm in o:
  40.                 d=0  
  41.  
  42.                 while d!=len(m):
  43.                     sum_all=0
  44.  
  45.                     for i in range(0,len(lm)):
  46.                         sum_all+=lm[i]*m[d][i]
  47.  
  48.                     f.append(sum_all)
  49.  
  50.                     d+=1
  51.             return Matrix(f,self.n_r,arg.m_c)
  52.  
  53.     def __sub__(self,arg):
  54.            
  55.         return Matrix((self+(arg*(-1))).body,self.n_r,self.m_c)
  56.  
  57.     def trace(self):
  58.         if self.n_r==self.m_c:
  59.             sum_all=0
  60.             for i in range(0,self.m_c):
  61.                 sum_all+=(self.body[i*self.m_c+i])
  62.  
  63.             return sum_all        
  64.  
  65.     def transpose(self):
  66.         m=[]
  67.         k=0
  68.         while k!=self.m_c :
  69.             s=self.body[k::self.m_c]
  70.             m.append(s)
  71.             k+=1
  72.         return Matrix(m,self.m_c,self.n_r)
  73.  
  74.     def __getitem__(self,key):
  75.         return self.body[self.m_c*(key[0]-1)+key[1]-1]
  76.  
  77.     def __setitem__(self,key,value):
  78.         self.body[self.m_c*(key[0]-1)+key[1]-1]=value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement