---
title: numpy concatenate — ต่อ array หลายตัวเข้าด้วยกัน
url: https://www.thepexcel.com/functions/python/combine/numpy-concatenate/
type: function-explainer
program: Python
syntax: "np.concatenate(arrays, axis)"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

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

> np.concatenate ใช้ต่อ array หลายชุดเข้าด้วยกันตามแกนที่กำหนด คล้ายกับที่ pd.concat ทำกับ DataFrame แ

## คำอธิบาย

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

## Syntax

```excel
np.concatenate(arrays, axis)
```

## Arguments

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

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ต่อ array 1D สองชุดเข้าด้วยกัน

```excel
np.concatenate([a, b])
```

**ผลลัพธ์:** `[1 2 3 4 5 6]`

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

### 2. ตัวอย่างที่ 2: ต่อ 2D array ในแนวตั้ง (axis=0 เพิ่มแถว)

```excel
np.concatenate([top, bottom], axis=0)
```

**ผลลัพธ์:** `[[1 2 3]
 [4 5 6]
 [7 8 9]]`

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

### 3. ตัวอย่างที่ 3: ต่อ 2D array ในแนวนอน (axis=1 เพิ่มคอลัมน์)

```excel
np.concatenate([left, right], axis=1)
```

**ผลลัพธ์:** `[[1 2 5 6]
 [3 4 7 8]]`

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

### 4. ตัวอย่างที่ 4: ต่อ array มากกว่าสองชุด

```excel
np.concatenate([a, b, c])
```

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

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

## หมายเหตุเพิ่มเติม

- ผมแนะนำให้ใช้ np.vstack แทน np.concatenate(..., axis=0) และ np.hstack แทน np.concatenate(..., axis=1) ตอนทำ 2D array ครับ โค้ดสั้นกว่าและ intent ชัดกว่ามาก เพื่อนอ่านโค้ดแล้วรู้ทันทีว่าต่อแนวไหน

- ส่วนตัวผมถ้าต้องการต่อ array แล้วแผ่เป็น 1D เลย ใช้ np.concatenate([a, b], axis=None) ได้ครับ มันจะ flatten ทุก array ก่อนต่อ ไม่ต้องเรียก .flatten() แยกต่างหาก

## คำถามที่พบบ่อย

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

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

**Q: 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 ด้วยครับ

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

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

## แหล่งข้อมูลเพิ่มเติม

- [numpy.concatenate — NumPy official docs](https://numpy.org/doc/stable/reference/generated/numpy.concatenate.html) _(article)_

---

_Source: [https://www.thepexcel.com/functions/python/combine/numpy-concatenate/](https://www.thepexcel.com/functions/python/combine/numpy-concatenate/)_
