Якщо ви додаєте лише раз чи раз у раз і знову, використання 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)
Використання пітонного списку, який перетворюється на масив після цього:
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)
Попередньо виділення numpy масиву:
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)
np.insert([1,2,3], 3, 1)