เมื่อต่อท้ายเพียงครั้งเดียวหรือทุก ๆ ครั้งการใช้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)
การใช้รายการ python แปลงเป็นอาร์เรย์ในภายหลัง:
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)