При добавлении только один или один раз время от времени, использование np.append
в вашем массиве должно подойти. Недостаток этого подхода заключается в том, что память выделяется для совершенно нового массива каждый раз, когда он вызывается. При выращивании массива для значительного количества выборок было бы лучше либо предварительно выделить массив (если известен общий размер), либо добавить в список и впоследствии преобразовать в массив.
Использование np.append
:
b = np.array([0])
for k in range(int(10e4)):
b = np.append(b, k)
1.2 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Использование последующего преобразования списка Python в массив:
d = [0]
for k in range(int(10e4)):
d.append(k)
f = np.array(d)
13.5 ms ± 277 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Предварительно выделенный массив numy:
e = np.zeros((n,))
for k in range(n):
e[k] = k
9.92 ms ± 752 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Когда окончательный размер неизвестен, предварительное выделение затруднительно, я пытался выполнить предварительное выделение кусками по 50, но это не приблизилось к использованию списка.
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)