キノカレッジ
キノクエスト
キノクエスト for Biz

【毎日Python】Pythonで配列を縦方向に結合する方法|numpy.vstack

Pythonで配列を縦方向に結合する方法です。
使用するのは、Pythonのnumpyライブラリのvstack関数です。

import numpy as np

まず、このような2つの1次元配列を結合してみましょう。

a_1 = np.array([1, 2, 3, 4, 5])

a_2 = np.array([10, 20, 30, 40, 50])

vstack関数の引数に、結合させたい配列をタプルで指定します。
実行します。
配列を縦方向に結合することができました。

np.vstack((a_1, a_2))

実行結果:

array([[ 1,  2,  3,  4,  5],
       [10, 20, 30, 40, 50]])

次に、1次元配列と2次元配列を結合してみましょう。

a_1 = np.array([1, 2, 3, 4, 5])

a_3 = np.array([[60, 61, 62, 63, 64], 
              [70, 71, 72, 73, 74], 
              [80, 81, 82, 83, 84]])

先ほどと同様に、タプルで結合させたい配列を指定して実行します。
配列を縦方向に結合することができました。
このように、行数が異なる配列でも、列数が同じであれば結合することができます。

np.vstack((a_1, a_3))

実行結果:

array([[ 1,  2,  3,  4,  5],
       [60, 61, 62, 63, 64],
       [70, 71, 72, 73, 74],
       [80, 81, 82, 83, 84]])

次に、3つの配列を結合してみましょう。

a_1 = np.array([1, 2, 3, 4, 5])

a_2 = np.array([10, 20, 30, 40, 50])

a_3 = np.array([[60, 61, 62, 63, 64], 
              [70, 71, 72, 73, 74], 
              [80, 81, 82, 83, 84]])

実行します。
配列を結合することができました。

np.vstack((a_1, a_2, a_3))

実行結果:

array([[ 1,  2,  3,  4,  5],
       [10, 20, 30, 40, 50],
       [60, 61, 62, 63, 64],
       [70, 71, 72, 73, 74],
       [80, 81, 82, 83, 84]])

なお、似た関数でhstack関数があります。
hstack関数は、横方向に配列を結合することができます。

a_1 = np.array([1, 2, 3, 4, 5])

a_2 = np.array([10, 20, 30, 40, 50])
np.hstack((a_1, a_2))

実行結果:

array([ 1,  2,  3,  4,  5, 10, 20, 30, 40, 50])

関連メソッド

【毎日Python】Pythonで配列を横方向に結合する方法|numpy.hstack

【毎日Python】Pythonで配列に末尾に要素を追加する方法|numpy.append

【こつこつPython】Pythonで配列を任意の方向に結合する方法|numpy.block

【こつこつPython】Pythonで配列を新たな次元で結合する方法|numpy.stack