Arada bir veya bir kez eklerken np.append
, dizinizde kullanmak iyi olacaktır. Bu yaklaşımın dezavantajı, belleğin her çağrıldığında tamamen yeni bir dizi için ayrılmasıdır. Bir diziyi önemli miktarda örnek için büyütürken, diziyi önceden tahsis etmek (toplam boyut biliniyorsa) veya bir listeye eklemek ve daha sonra bir diziye dönüştürmek daha iyi olacaktır.
Kullanarak 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)
Daha sonra diziye dönüştürülen python listesini kullanma:
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 dizisini önceden ayırma:
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)
Nihai boyut bilinmediğinde ön tahsis zor olduğunda, 50'lik parçalar halinde ön tahsis yapmayı denedim ama liste kullanmaya yaklaşmadı.
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
np.insert([1,2,3], 3, 1)