Самый быстрый способ увеличить числовой массив numpy

Требования:

  • Мне нужно вырастить массив произвольно большого размера из данных.
  • Я могу угадать размер (примерно 100-200) без каких-либо гарантий, что массив будет соответствовать каждый раз
  • Как только он вырастет до своего окончательного размера, мне нужно выполнить числовые вычисления с ним, поэтому я предпочел чтобы в конечном итоге добраться до двумерного массива numpy.
  • Скорость имеет решающее значение. Например, для одного из 300 файлов метод update () вызывается 45 миллионов раз (занимает около 150 секунд), а метод finalize () вызывается 500 тысяч раз (занимает всего 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
65
задан Prashant Kumar 26 November 2013 в 19:58
поделиться