हर बार और केवल एक बार या एक बार आवेदन करते समय, 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)
पूर्व-आबंटित संख्या:
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)
जब अंतिम आकार unkown है, तो पूर्व-आवंटन मुश्किल है, मैंने 50 के हिस्से में पूर्व-आवंटन की कोशिश की, लेकिन यह सूची का उपयोग करने के करीब नहीं आया।
85.1 ms ± 561 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
np.insert([1,2,3], 3, 1)