Exigences :
- Je dois faire croître un tableau de manière arbitraire à partir de données.
- Je peux estimer la taille (environ 100-200) sans garantie que le tableau s'adapte à chaque fois.
- Une fois qu'il a atteint sa taille finale, je dois effectuer des calculs numériques dessus, donc je préférerais finalement obtenir un tableau numpy 2D.
- La vitesse est critique. Par exemple, pour l'un des 300 fichiers, la méthode update() est appelée 45 millions de fois (prend environ 150s) et la méthode finalize() est appelée 500 000 fois (prend un total de 106s)... pour un total d'environ 250s.
Voici mon code :
def __init__(self):
self.data = []
def update(self, row):
self.data.append(row)
def finalize(self):
dx = np.array(self.data)
D'autres choses que j'ai essayées incluent le code suivant... mais c'est beaaaucoup plus lent.
def classe A :
def __init__(self):
self.data = np.array([])
def update(self, row):
np.append(self.data, row)
def finalize(self):
dx = np.reshape(self.data, shape=(self.data.shape[0]/5, 5))
Voici un schéma de comment cela est appelé :
for i in range(500000):
ax = A()
for j in range(200):
ax.update([1,2,3,4,5])
ax.finalize()
# du traitement sur ax