Al agregar solo una o una vez de vez en cuando, usar np.append
en su matriz debería estar bien. El inconveniente de este enfoque es que la memoria se asigna para una matriz completamente nueva cada vez que se llama. Al cultivar una matriz para una cantidad significativa de muestras, sería mejor preasignar la matriz (si se conoce el tamaño total) o agregarla a una lista y convertirla en una matriz después.
Usando 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)
Usando la lista de Python convirtiendo a una matriz después:
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)
Preasignación de matriz 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)
Cuando se desconoce el tamaño final, la asignación previa es difícil, intenté realizar la asignación previa en partes de 50, pero no se acercó a usar una lista.
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
np.insert([1,2,3], 3, 1)