Thep Excel

numpy concatenateต่อ array หลายตัวเข้าด้วยกัน

np.concatenate ใช้ต่อ array หลายชุดเข้าด้วยกันตามแกนที่กำหนด คล้ายกับที่ pd.concat ทำกับ DataFrame แต่เป็น NumPy version ที่เร็วกว่าและเหมาะกับข้อมูลตัวเลขล้วนๆ ครับ

>_
np.concatenate(arrays, axis)

ความนิยม5/10
ความยาก3/10
ประโยชน์5/10

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าndarray

คืนเป็น NumPy ndarray ชุดเดียวที่รวม array ทั้งหมดเข้ากันแล้วครับ เอาไปคำนวณ vectorized ต่อได้ทันที หรือส่งเข้า pandas เป็น column ก็ได้

อาร์กิวเมนต์ ชนิด คำอธิบาย
arrays list | tuple of ndarray list หรือ tuple ที่บรรจุ array ทุกตัวที่ต้องการต่อ ต้องครอบด้วยวงเล็บ [] หรือ () เสมอ เช่น [a, b] หรือ (a, b) ทุก array ต้องมีขนาดตรงกันในแกนที่ไม่ได้ต่อ
[axis]ไม่บังคับ int | None แกนที่ใช้ต่อ array: 0 = ต่อแนวตั้ง (เพิ่มแถว), 1 = ต่อแนวนอน (เพิ่มคอลัมน์), None = แผ่ทุก array ให้เป็น 1D ก่อนต่อ

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

np.concatenate คือฟังก์ชันที่ผมใช้ตอนต้องนำ array หลายชุดมาต่อกันเป็นชุดเดียว ไม่ว่าจะต่อในแนวนอนหรือแนวตั้งครับ

จุดที่ต้องระวังคือ argument ตัวแรกไม่ใช่ array หลายตัวแยกกัน แต่เป็น list หรือ tuple ที่ครอบ array ทุกตัวไว้ เช่น np.concatenate([a, b, c]) — ถ้าลืมใส่วงเล็บรอบนอกจะ error ทันที สำหรับ 2D array จะต่อตามแกน axis=0 (เพิ่มแถว) หรือ axis=1 (เพิ่มคอลัมน์) ก็ได้

ที่เจ๋งคือต่อได้พร้อมกันหลาย array ในคำสั่งเดียว เช่น np.concatenate([a, b, c, d]) โดยไม่ต้องเรียกซ้ำ ประหยัดโค้ดและเร็วกว่า loop มากครับ

ส่วนตัวผมมักใช้ np.concatenate ตอนประกอบชุดข้อมูลที่แยกโหลดมาจากหลายไฟล์ หรือตอนรวม array ผลลัพธ์จากหลาย batch เข้าด้วยกัน ถ้า array เป็น 2D และต้องการ shortcut ผมจะใช้ np.vstack (ต่อแถว) หรือ np.hstack (ต่อคอลัมน์) แทนเพราะอ่านง่ายกว่าครับ 😎

Examples

ตัวอย่างที่ 1: ต่อ array 1D สองชุดเข้าด้วยกันnp.concatenate([a, b])

ผมนำ array สองตัวมาต่อกันโดยใส่ไว้ใน list ก่อนส่งเข้าฟังก์ชันครับ ได้ array 1D ยาว 6 ตัว จุดสำคัญคือต้องครอบด้วย [] เสมอ ถ้าเขียน np.concatenate(a, b) จะ error ทันที

>_
np.concatenate([a, b])

ผลลัพธ์[1 2 3 4 5 6]
ตัวอย่างที่ 2: ต่อ 2D array ในแนวตั้ง (axis=0 เพิ่มแถว)np.concatenate([top, bottom], axis=0)

axis=0 คือต่อในแนวตั้ง หรือ 'วางซ้อนกัน' ครับ top มี 2 แถว bottom มี 1 แถว ผลลัพธ์จึงได้ matrix 3×3 เหมือนเอา Excel range สองชุดมาวางต่อกันในแนวตั้งเลย

>_
np.concatenate([top, bottom], axis=0)

ผลลัพธ์[[1 2 3]
[4 5 6]
[7 8 9]]
ตัวอย่างที่ 3: ต่อ 2D array ในแนวนอน (axis=1 เพิ่มคอลัมน์)np.concatenate([left, right], axis=1)

axis=1 คือต่อในแนวนอน หรือ 'เพิ่มคอลัมน์' ครับ left มี 2 คอลัมน์ right มี 2 คอลัมน์ ได้ matrix 2×4 เหมือนใน Excel ที่เอาสองตารางมาต่อข้างๆ กัน จำนวนแถวต้องเท่ากันเสมอ

>_
np.concatenate([left, right], axis=1)

ผลลัพธ์[[1 2 5 6]
[3 4 7 8]]
ตัวอย่างที่ 4: ต่อ array มากกว่าสองชุดnp.concatenate([a, b, c])

ผมใส่ array สามตัวใน list เดียวได้เลยครับ ไม่ต้องเรียกฟังก์ชันซ้ำหลายรอบ ประหยัดโค้ดและเร็วกว่า loop มาก ใช้บ่อยตอนรวม batch ข้อมูลที่โหลดมาแยกกัน

>_
np.concatenate([a, b, c])

ผลลัพธ์[10 20 30 40 50 60]

FAQs

ลืมใส่ [] รอบ array แล้ว error แบบไหน?+

ถ้าเขียน np.concatenate(a, b) โดยไม่มี list ครอบ NumPy จะตีความว่า b คือ axis ซึ่งเป็น array ไม่ใช่ int จะ error ว่า 'axis must be an integer' ครับ วิธีแก้ง่ายมาก แค่เพิ่ม [] เป็น np.concatenate([a, b]) ก็ใช้งานได้เลย ผมเจอ error นี้บ่อยมากช่วงแรกๆ

np.concatenate กับ pd.concat ต่างกันยังไง?+

ต่างกันที่ใช้กับข้อมูลคนละประเภทครับ np.concatenate ใช้กับ NumPy ndarray เหมาะกับข้อมูลตัวเลขล้วนๆ และเร็วกว่า ส่วน pd.concat ใช้กับ pandas DataFrame หรือ Series รองรับ index, column names, และ mixed types ได้ด้วย ผมใช้ np.concatenate ตอนคำนวณ numerical เยอะๆ และ pd.concat ตอนต้องการ label หรือ metadata ด้วยครับ

จะต่อ array ที่มี shape ไม่ตรงกันได้ไหม?+

ได้บางส่วนครับ ต่อ axis ไหนก็แล้วแต่ แกนอื่นที่ไม่ได้ต่อต้องมีขนาดเท่ากันเสมอ เช่น ต่อ axis=0 (แถว) แต่จำนวนคอลัมน์ต้องเท่ากัน ถ้าไม่เท่าก็ error 'all the input array dimensions except for the concatenation axis must match' ครับ

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ numpy concatenate จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้numpy concatenateCombine
Creation (1)
numpy array

np.array คือประตูหน้าบ้านของ NumPy ครับ ผมใช้มันแปลง Python list หรือ nested list ให้กลายเป็น ndarray ที่ทำ vectorized operations ได้ทันที โดยไม่ต้องวน loop เองเลยแม้แต่บรรทัดเดียว

Transform (1)
numpy reshape

arr.reshape ใน NumPy ผมใช้สำหรับเปลี่ยนรูปร่าง (shape) ของ array โดยจำนวนสมาชิกทั้งหมดยังคงเดิม เช่น แปลง 1D array 12 ตัวให้กลายเป็น matrix 3×4 ได้ทันที โดยไม่ต้องสร้างข้อมูลใหม่ครับ

Combine (1)
pandas concat

pd.concat ผมใช้สำหรับนำ DataFrame หลายตัวมาเชื่อมต่อกัน จะต่อแนวตั้ง (กองแถว) หรือแนวนอน (เพิ่มคอลัมน์) ก็ได้ ถ้าใครเคยใช้ Power Query ใน Excel แล้ว Append Queries คือตัวเทียบเคียงที่ใกล้เคียงที่สุดครับ

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่