1. ホーム
  2. プログラマーのための線形代数
  3. NumPyの使い方
  4. 配列の結合

配列の結合

ここまで NumPy でベクトルや行列を作成するためによく使われる方法をいくつか見てきました。ここでは既に作成したベクトルや行列同士を結合して、新しいデータセットを作成する方法を解説します。具体的には以下の 2 つです。

行列結合でよく使う 2 つの関数

  • np.vstack:配列同士を垂直に結合
  • np.hstack:配列同士を水平に結合

これらの関数も実務上目にする機会が多いものなのでしっかりと確認しておきましょう。

np.vstack – 行列を垂直に結合

2 つの配列があるとき、それを垂直に結合して新しい配列を作成する関数が np.vstack() です。たとえば以下のように、3 列のベクトルと 2 行 3 列の行列を垂直に重ねると、3 行 3 列の新しいベクトルになります。

In [1]:
# NumPyのインポート
import numpy as np
# 3列のベクトルを作成
A = np.array([1,2,3])
print(A)
[1 2 3]
In [2]:
# 2行3列の行列を作成
B = np.array([
    [4,5,6],
    [7,8,9]])
print(B)
[[4 5 6]
 [7 8 9]]
In [3]:
# 2つの配列を垂直に結合
C = np.vstack([A,B]) # 結合する 2 つの配列はリスト又はタプルで渡す
print(C)
[[1 2 3]
 [4 5 6]
 [7 8 9]]

np.hstack – 行列を水平に結合

2 つの配列があるとき、それを水平に結合して新しい配列を作成する関数が np.hstack() です。たとえば以下のように、3 行 2 列の行列と 3 行 3 列の行列を水平に重ねると、3 行 5 列の新しいベクトルになります。

In [4]:
# 3行2列のベクトルを作成
A = np.array([
    [1,2],
    [3,4],
    [5,6]
])
print(A)
[[1 2]
 [3 4]
 [5 6]]
In [5]:
# 3行3列のベクトルを作成
B = np.array([
    [7,8,9],
    [10,11,12],
    [13,14,15]
])
print(B)
[[ 7  8  9]
 [10 11 12]
 [13 14 15]]
In [6]:
# 2つの配列を水平に結合
C = np.hstack([A,B]) # 結合する 2 つの配列はリスト又はタプルで渡す
print(C)
[[ 1  2  7  8  9]
 [ 3  4 10 11 12]
 [ 5  6 13 14 15]]

以上が NumPy でデータセットを結合するためによく使う関数です。しっかりと覚えておきましょう。


一緒に読んでおきたいページ