Khi chỉ thêm một lần hoặc một lần thỉnh thoảng, sử dụng np.append
trên mảng của bạn sẽ ổn. Hạn chế của phương pháp này là bộ nhớ được cấp phát cho một mảng hoàn toàn mới mỗi khi nó được gọi. Khi phát triển một mảng cho một lượng mẫu đáng kể, tốt hơn là nên phân bổ trước mảng (nếu biết tổng kích thước) hoặc thêm vào danh sách và chuyển đổi thành mảng sau đó.
Sử dụng 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)
Sử dụng danh sách python chuyển đổi thành mảng sau đó:
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)
Phân bổ trước mảng 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)
Khi kích thước cuối cùng chưa được xác định, việc phân bổ trước rất khó khăn, tôi đã thử phân bổ trước theo khối 50 nhưng nó không gần bằng cách sử dụng danh sách.
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
np.insert([1,2,3], 3, 1)