Advertisement
Guest User

Untitled

a guest
Jul 9th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. from day01.ex02.vector import Vector
  2.  
  3.  
  4. class Matrix:
  5.  
  6.     def __init__(self, data, shape=None):
  7.         self.data = data
  8.         self.shape = shape
  9.  
  10.     @staticmethod
  11.     def is_matrix(matrix):
  12.         if not(isinstance(matrix, list)):
  13.             return False
  14.         for i, value in enumerate(matrix):
  15.             if not(value[i], list):
  16.                 return False
  17.         return True
  18.  
  19.     @staticmethod
  20.     def __shape_to_data(value):
  21.         ret = []
  22.         nbr = 0.0
  23.         for row in range(value[0]):
  24.             ret.append([])
  25.             for col in range(value[1]):
  26.                 ret[row].append(nbr)
  27.         return ret
  28.  
  29.     @staticmethod
  30.     def __count_data(value):
  31.         row = len(value)
  32.         col = len(value[0])
  33.         return (row, col)
  34.  
  35.     @property
  36.     def data(self):
  37.         return self._data
  38.  
  39.     @property
  40.     def shape(self):
  41.         return self._shape
  42.  
  43.     @data.setter
  44.     def data(self, value):
  45.         try:
  46.             if not value:
  47.                 raise ValueError
  48.             elif not(isinstance(value, tuple)):
  49.                 if not(self.is_matrix(value)):
  50.                     raise TypeError
  51.                 else:
  52.                     self._data = value
  53.             elif isinstance(value, tuple):
  54.                 self._data = self.__shape_to_data(value)
  55.                 self.shape = value
  56.         except ValueError:
  57.             print("valueerror")
  58.         except TypeError:
  59.             print("typeerror")
  60.  
  61.     @shape.setter
  62.     def shape(self, value):
  63.         try:
  64.             if value is None:
  65.                 self._shape = self.__count_data(self.data)
  66.             elif not(isinstance(value, tuple)):
  67.                 raise TypeError
  68.             elif len(value) > 2:
  69.                 raise ValueError
  70.             else:
  71.                 self._shape = value
  72.         except TypeError:
  73.             print("typeerror")
  74.         except ValueError:
  75.             print("valueerror")
  76.  
  77.     def __str__(self):
  78.         txt = f"Matrix: {self.data}"
  79.         return txt
  80.  
  81.     def __mul__(self, other):
  82.         if isinstance(other, Vector):
  83.             return
  84.  
  85.  
  86. matrix = Matrix([[0.0, 1.0, 2.0, 3.0], [4.0, 5.0, 6.0, 7.0]])
  87. print("Matrix1", matrix)
  88. print(matrix.shape)
  89. matrix2 = Matrix((3, 3))
  90. print("Matrix2", matrix2)
  91. print(matrix2.shape)
  92. matrix3 = Matrix([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]], (3, 3))
  93. print("Matrix3", matrix3)
  94. print(matrix3.shape)
  95. vector = Vector(5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement