Требования:
- Мне нужно вырастить массив данных сколь угодно большого размера из данных.
- Я могу угадать размер (примерно 100-200) без каких-либо гарантий, что массив будет соответствовать каждый раз
- Как только он будет увеличен до конечного размера, мне нужно выполнить числовые вычисления, поэтому я бы предпочел в конечном итоге получить двумерный массив с нулевыми значениями.
- Скорость имеет решающее значение. Например, для одного из 300 файлов метод update () вызывается 45 миллионов раз (занимает 150 с или около того), а метод finalize () вызывается 500 000 раз (всего 106 с) ... всего 250 с. или около того.
Вот мой код:
def __init__(self):
self.data = []
def update(self, row):
self.data.append(row)
def finalize(self):
dx = np.array(self.data)
Другие вещи, которые я пробовал, включают следующий код ... но это все медленнее.
def class 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, size=(self.data.shape[0]/5, 5))
Вот схема того, как это называется:
for i in range(500000):
ax = A()
for j in range(200):
ax.update([1,2,3,4,5])
ax.finalize()
# some processing on ax