np.concatenateとは?NumPyで配列を連結する方法を初心者向けに解説

PythonでNumPyを使っていると、「複数の配列を1つにつなげたい」という場面があります。
そのようなときに便利なのが、np.concatenate()です。
np.concatenate()を使うと、NumPyの配列を指定した軸(axis)に沿って連結できます。
この記事では、np.concatenate()の基本的な使い方から、axisの指定、2次元配列の連結、np.vstack()やnp.hstack()との違いまで、初心者向けにわかりやすく解説します。
np.concatenateとは
np.concatenate()は、NumPy配列を連結するための関数です。
基本的な書き方は次のとおりです。
import numpy as np
np.concatenate((配列1, 配列2))
例えば、次のように使います。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.concatenate((a, b))
print(c)
実行結果:
[1 2 3 4 5 6]
aとbという2つの配列が、1つの配列に連結されました。
np.concatenateの基本構文
np.concatenate()の基本的な構文は次のとおりです。
np.concatenate((a1, a2, ...), axis=0)
主な引数は次のとおりです。
| 引数 | 内容 |
|---|---|
a1, a2, ... |
連結する配列 |
axis |
どの方向に連結するか |
axisを省略した場合は、基本的にaxis=0で連結されます。
1次元配列を連結する
最も基本的なのが、1次元配列の連結です。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.concatenate((a, b))
print(result)
実行結果:
[1 2 3 4 5 6]
3つ以上の配列も連結できます。
import numpy as np
a = np.array([1, 2])
b = np.array([3, 4])
c = np.array([5, 6])
result = np.concatenate((a, b, c))
print(result)
実行結果:
[1 2 3 4 5 6]
2次元配列をnp.concatenateで連結する
np.concatenate()は、2次元以上の配列でも使用できます。
例えば、次の2つの配列を用意します。
import numpy as np
a = np.array([
[1, 2],
[3, 4]
])
b = np.array([
[5, 6],
[7, 8]
])
axis=0で連結
result = np.concatenate((a, b), axis=0)
print(result)
実行結果:
[[1 2]
[3 4]
[5 6]
[7 8]]
axis=0では、行方向に連結されます。
つまり、
a
1 2
3 4
↓
b
5 6
7 8
が、
1 2
3 4
5 6
7 8
になります。
axis=1で連結する
axis=1を指定すると、列方向に連結できます。
import numpy as np
a = np.array([
[1, 2],
[3, 4]
])
b = np.array([
[5, 6],
[7, 8]
])
result = np.concatenate((a, b), axis=1)
print(result)
実行結果:
[[1 2 5 6]
[3 4 7 8]]
つまり、
1 2 | 5 6
3 4 | 7 8
という形で横方向につながります。
np.concatenateのaxisとは
np.concatenate()を理解するうえで重要なのがaxisです。
2次元配列では、一般的に次のように考えるとわかりやすいでしょう。
axis=0 → 縦方向
axis=1 → 横方向
例えば、
a = np.array([
[1, 2],
[3, 4]
])
の場合、
axis=1 →
1 2
3 4
↓
axis=0
というイメージです。
np.concatenateで3つ以上の配列を連結する
np.concatenate()では、複数の配列をまとめて連結できます。
import numpy as np
a = np.array([1, 2])
b = np.array([3, 4])
c = np.array([5, 6])
result = np.concatenate((a, b, c))
print(result)
実行結果:
[1 2 3 4 5 6]
配列を順番に連結したい場合に便利です。
np.concatenateとリストの違い
Pythonのリストでも+演算子を使って要素を連結できます。
a = [1, 2, 3]
b = [4, 5, 6]
result = a + b
print(result)
実行結果:
[1, 2, 3, 4, 5, 6]
一見するとnp.concatenate()と同じように見えます。
しかし、NumPy配列では配列の形状やaxisを指定して連結できる点が大きな違いです。
import numpy as np
a = np.array([
[1, 2],
[3, 4]
])
b = np.array([
[5, 6],
[7, 8]
])
result = np.concatenate((a, b), axis=1)
print(result)
このように、NumPyでは2次元以上のデータを方向を指定して連結できます。
np.concatenateでエラーになるケース
np.concatenate()では、配列の形状が合わないとエラーになることがあります。
例えば、
import numpy as np
a = np.array([
[1, 2],
[3, 4]
])
b = np.array([
[5, 6, 7],
[8, 9, 10]
])
result = np.concatenate((a, b), axis=0)
この場合、aは2列、bは3列なので、axis=0方向に連結することができません。
axis=0で連結する場合、連結する軸以外の次元のサイズを合わせる必要があります。
一方、axis=1なら、
result = np.concatenate((a, b), axis=1)
print(result)
とできます。
結果:
[[ 1 2 5 6 7]
[ 3 4 8 9 10]]
np.concatenateとnp.vstackの違い
NumPyにはnp.vstack()という関数もあります。
np.vstack((a, b))
これは、配列を縦方向に積み重ねるときに便利です。
例えば、
import numpy as np
a = np.array([1, 2])
b = np.array([3, 4])
result = np.vstack((a, b))
print(result)
実行結果:
[[1 2]
[3 4]]
一方、np.concatenate()では、
np.concatenate((a, b))
のように連結します。
np.concatenate()はaxisを指定することで、より一般的な配列連結に対応できます。
np.concatenateとnp.hstackの違い
np.hstack()は、配列を横方向に連結するときによく使われます。
import numpy as np
a = np.array([
[1, 2],
[3, 4]
])
b = np.array([
[5, 6],
[7, 8]
])
result = np.hstack((a, b))
print(result)
実行結果:
[[1 2 5 6]
[3 4 7 8]]
これは、
np.concatenate((a, b), axis=1)
と同じような処理です。
np.concatenateとnp.stackの違い
np.concatenate()と似た関数にnp.stack()があります。
この2つは混同しやすいため注意が必要です。
np.concatenate()は、既存の軸に沿って配列を連結します。
一方、np.stack()は、新しい軸を追加して配列を結合します。
例えば、
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(np.concatenate((a, b)))
結果:
[1 2 3 4 5 6]
一方、
print(np.stack((a, b)))
結果:
[[1 2 3]
[4 5 6]]
この違いはNumPyを使いこなすうえで重要です。
np.concatenateの戻り値
np.concatenate()の戻り値は、連結されたNumPyのndarrayです。
例えば、
import numpy as np
a = np.array([1, 2])
b = np.array([3, 4])
result = np.concatenate((a, b))
print(type(result))
実行結果:
<class 'numpy.ndarray'>
np.concatenateで覚えておきたいポイント
np.concatenate()を使うときは、次のポイントを押さえておきましょう。
1. 複数の配列を連結できる
np.concatenate((a, b, c))
のように複数の配列を指定できます。
2. axisで方向を指定できる
np.concatenate((a, b), axis=0)
や、
np.concatenate((a, b), axis=1)
のように指定します。
3. 配列の形状に注意する
特に2次元以上の配列では、連結する方向以外の次元が一致している必要があります。
4. np.stackとは役割が違う
既存の軸に沿って連結するのがnp.concatenate()、新しい軸を追加して結合するのがnp.stack()です。
まとめ
np.concatenate()は、NumPyの配列を連結するための関数です。
基本的な使い方は、
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.concatenate((a, b))
print(result)
です。
実行結果:
[1 2 3 4 5 6]
2次元配列ではaxisが重要です。
np.concatenate((a, b), axis=0)
なら縦方向、
np.concatenate((a, b), axis=1)
なら横方向に連結できます。
NumPyでデータ分析や機械学習を行う場合、複数の配列やデータを結合する場面は非常に多いため、np.concatenate()はぜひ覚えておきたい関数です。
np.concatenateのポイント
-
NumPy配列を連結する
-
複数の配列をまとめて連結できる
-
axis=0で縦方向に連結できる -
axis=1で横方向に連結できる -
配列の形状が合わないとエラーになる
-
np.vstack()やnp.hstack()と使い分ける -
np.stack()とは「軸を追加するかどうか」が大きな違い
「NumPyの配列をつなげたい」と思ったら、まずnp.concatenate()を検討するとよいでしょう。
NumPy|結合・分割の関連記事
複数の配列をつなぐ・分けるための関数の記事です。



