Source code for tsad.utils.iterators

"""
Very useful librray
"""
import numpy as np

# class MeshLoader:
#     def __init__(self, params):
#         """
# ЭТО ОКАЗЫВАЕТСЯ в NUMPY
# Only list in list, without оборачиваетелй numpy
# 		# mesh_alpha = np.arange(10)
# 		# mesh_beta = np.arange(10)
# 		# for k,z in enumerate(MeshLoader([[0.1,0.2,0.3],['a','b']])):
# 		#     print(z)
# 		"""
#         self.params = params
#         _my_array = np.ones(tuple(len(obj) for obj in params))
#         self.indexes = []
#         for index, values in np.ndenumerate(_my_array):
#             self.indexes.append(index)

#     def __iter__(self):
#         self.i = -1
#         return self

#     def __next__(self):
#         if self.i < len(self.indexes)-1:
#             self.i+=1
#             return tuple(self.params[from_parametr][self.indexes[self.i][from_parametr]] for from_parametr in range(len(self.params)))
#         else:
#             raise StopIteration

[docs]class Loader: def __init__(self, X,y, batch_size,shuffle=True, random_state = None): """ X, y are lists """ if shuffle==True: np.random.seed(random_state) indices = np.array(range(len(X))) np.random.shuffle(indices) self.X = [X[ind] for ind in indices] self.y = [y[ind] for ind in indices] else: self.X = X self.y = y self.batch_size = batch_size def __iter__(self): self.i = - self.batch_size return self def __next__(self): if self.i+self.batch_size < len(self.X): self.i+=self.batch_size return self.X[self.i:self.i+self.batch_size], self.y[self.i:self.i+self.batch_size] elif self.i+2*self.batch_size < len(self.X): return self.X[self.i:], self.y[self.i:] else: raise StopIteration def __len__(self): return len(np.arange(0,len(self.X),self.batch_size))