โดยทั่วไปคุณสามารถเชื่อมลำดับอาร์เรย์ทั้งหมดตามแกนใดก็ได้:
numpy.concatenate( LIST, axis=0 )
แต่คุณไม่ต้องกังวลเกี่ยวกับรูปร่างและมิติของแต่ละอาร์เรย์ในรายการ (สำหรับการส่งออก 3x5 2 มิติคุณต้องให้แน่ใจว่าพวกเขาทั้งหมด 2 มิติอาร์เรย์ n โดย 5 แล้ว) หากคุณต้องการเชื่อมอาร์เรย์ 1 มิติเข้าด้วยกันเป็นแถวของเอาต์พุต 2 มิติคุณต้องขยายมิติข้อมูล
ตามที่คำตอบของ Jorge ชี้ให้เห็นนอกจากนี้ยังมีฟังก์ชั่นที่stack
แนะนำใน numpy 1.10:
numpy.stack( LIST, axis=0 )
สิ่งนี้ใช้แนวทางเสริม: สร้างมุมมองใหม่ของอาร์เรย์อินพุตแต่ละรายการและเพิ่มมิติพิเศษ (ในกรณีนี้คือทางด้านซ้ายดังนั้นn
อาร์เรย์ 1D องค์ประกอบแต่ละตัวจะกลายเป็นอาร์เรย์ 1 by- n
2D) ก่อนที่จะเชื่อมต่อกัน จะใช้ได้ก็ต่อเมื่ออาร์เรย์อินพุตทั้งหมดมีรูปร่างเหมือนกันแม้จะอยู่ตามแกนของการเรียงต่อกัน
vstack
(หรือเทียบเท่าrow_stack
) มักเป็นโซลูชันที่ใช้งานง่ายกว่าเนื่องจากจะใช้ลำดับของอาร์เรย์ 1 และ / หรือ 2 มิติและขยายขนาดโดยอัตโนมัติเมื่อจำเป็นและเฉพาะเมื่อจำเป็นก่อนที่จะเชื่อมรายการทั้งหมดเข้าด้วยกัน ในกรณีที่ต้องการมิติใหม่มิติข้อมูลจะถูกเพิ่มทางด้านซ้าย อีกครั้งคุณสามารถเชื่อมรายการทั้งหมดพร้อมกันโดยไม่จำเป็นต้องทำซ้ำ:
numpy.vstack( LIST )
ลักษณะการทำงานที่ยืดหยุ่นนี้ยังแสดงโดยทางลัดของไวยากรณ์numpy.r_[ array1, ...., arrayN ]
(สังเกตวงเล็บเหลี่ยม) นี้เป็นสิ่งที่ดีสำหรับการเชื่อมโยงไม่กี่อาร์เรย์อย่างชัดเจนมีชื่อ LIST
แต่ไม่ดีสำหรับสถานการณ์ของคุณเพราะรูปแบบนี้จะไม่ยอมรับลำดับของอาร์เรย์เช่นคุณ
นอกจากนี้ยังมีฟังก์ชันcolumn_stack
และช็อตคัทที่คล้ายคลึงกันc_[...]
สำหรับการเรียงซ้อนในแนวนอน (คอลัมน์ที่ชาญฉลาด) ตลอดจนฟังก์ชันที่มีการบันทึกเกือบจะhstack
ด้วยเหตุผลบางประการข้อหลังมีความยืดหยุ่นน้อยกว่า (มีความเข้มงวดเกี่ยวกับมิติข้อมูลของอาร์เรย์อินพุตและพยายามที่จะเชื่อมต่อกัน อาร์เรย์ 1-D แบบ end-to-end แทนที่จะถือว่าเป็นคอลัมน์)
สุดท้ายในกรณีเฉพาะของการซ้อนอาร์เรย์ 1-D ในแนวตั้งสิ่งต่อไปนี้ยังใช้ได้:
numpy.array( LIST )
... เนื่องจากอาร์เรย์สามารถสร้างจากลำดับของอาร์เรย์อื่น ๆ ได้จึงเพิ่มมิติใหม่ให้กับจุดเริ่มต้น
LIST = [[array([1, 2, 3, 4, 5]), array([1, 2, 3, 4, 5],[1,2,3,4,5])]
นี่ไม่ใช่ไวยากรณ์ของ python ที่ถูกต้อง กรุณาชี้แจง.