スポンサーリンク

numpy配列の連結と分割

numpy配列の連結

列方向の連結(行増加)

vstack関数または、concatenate関数を利用することで列方向の連結ができます。

IN

import numpy as np
arr1 = np.array([[1, 2, 3],
                 [4, 5, 6]])
arr2 = np.array([[7, 8, 9]])
np.vstack([arr1, arr2]) # またはnp.concatenate([arr1, arr2])

OUT

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

行方向の連結(列増加)

hstack関数または、concatenate関数(引数axis=1)を利用することで行方向の連結ができます。

IN

import numpy as np
arr1 = np.array([[1, 2],
                 [3, 4]])
arr2 = np.array([[5],
                 [6]])
np.hstack([arr1, arr2]) # またはnp.concatenate([arr1, arr2], axis=1)

OUT

array([[1, 2, 5],
       [3, 4, 6]])

numpy配列の分割

列方向の分割(行減少)

vsplit関数を利用することで列方向の分割ができます。またはsplit関数でも可能です。
第2引数にリストで分割位置を指定できます。複数指定する場合は複数要素のリストで分割数を増やせます。

IN

import numpy as np
arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])
arr1, arr2 = np.split(arr, [2])

OUT(arr1)

array([[1, 2, 3],
       [4, 5, 6]])

OUT(arr2)

array([[7, 8, 9]])

行方向の分割(列減少)

hsplit関数を利用することで行方向の分割ができます。またはsplit関数に引数axis=1を指定することでも可能です。

IN

import numpy as np
arr = np.array([[1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]])
arr1, arr2 = np.hsplit(arr, [2]) # np.split(arr, [2], axis=1)

OUT(arr1)

array([[3],
       [6],
       [9]])

OUT(arr2)

array([[3],
       [6],
       [9]])