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

hstack
こつこつPython

この記事の執筆・監修

キノコード
キノコード

テクノロジーアンドデザインカンパニー合同会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

Python学習サービス「キノクエスト」のご紹介

キノコードでは、Pythonを習得するためのPython学習サービス「キノクエスト」を運営しています。
キノクエストには、学習カリキュラムがあり、学習順番に悩むことなく学習を進められます。
月額1,990円と本1冊分の値段です。

キノクエストの特徴は下記の通りです。
・Python学習をしている仲間が集まるコミュニティがある
・1000問以上の問題を解いてプログラミングを習得
・環境構築不要ですぐに始められる
・動画と連動しているので、インプットもできる。
・月額1,990円で、コミュニティもセット

キノクエストを詳しく知りたい方は、紹介ページをご覧ください。

▼キノクエストの紹介ページはこちら▼
https://kino-code.com/kq_service_a/

それでは、レッスンスタートです。

Pythonで1次元配列を横方向に結合する方法

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

import numpy as np

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

a_1 = np.array([2, 8, 5])

a_2 = np.array([30, 60, 10]) 

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

np.hstack((a_1, a_2))

実行結果:

array([ 2,  8,  5, 30, 60, 10])

Pythonで1次元配列と2次元配列を結合する方法

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

a_1 = np.array([2, 8, 5])

a_4 = np.array([[40, 20, 70], 
               [90, 10, 60], 
               [80, 30, 50]])

先ほどと同様に、タプルで結合させたい配列を指定して実行します。
エラーが排出されました。
hstack関数は横方向に結合されるため、列数が同じであっても、行数が異なる場合はエラーとなります。

np.hstack((a_1, a_4))

実行結果:

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 2 dimension(s)

Pythonで2次元配列を結合する方法

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

a_3 = np.array([[3, 6, 2, 5], 
              [4, 1, 7, 5], 
              [3, 5, 8, 5]])

a_4 = np.array([[40, 20, 70], 
               [90, 10, 60], 
               [80, 30, 50]])

実行します。
配列を横方向に結合することができました。
このように、列数が異なる配列でも、行数が同じであれば結合することができます。

np.hstack((a_3, a_4))

実行結果:

array([[ 3,  6,  2,  5, 40, 20, 70],
       [ 4,  1,  7,  5, 90, 10, 60],
       [ 3,  5,  8,  5, 80, 30, 50]])

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

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

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

実行結果:

array([[ 1,  2,  3,  4,  5],
       [10, 20, 30, 40, 50]])
未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト