Python
 Computer >> コンピューター >  >> プログラミング >> Python

NumPy配列の結合方法:concatenate()の使い方ガイド

NumPy配列を結合する方法:concatenate()の基本と使い方

NumPyは、Pythonで配列を扱うための定番ライブラリです。配列の生成から操作まで、あらゆるサイズの配列を効率的に処理できます。そんなNumPyには、複数の配列をひとつにまとめるための便利な機能が標準で用意されています。

numpy.concatenate()メソッドを使うと、2つ以上の配列を1つの配列に結合できます。

この記事では、NumPy配列の基本的な構造を確認したうえで、concatenate()を使った配列の結合方法を解説します。実際のコード例も交えて紹介するので、ぜひ参考にしてください。

NumPy配列の構造

NumPy配列は、NumPyライブラリで扱われる配列型です。見た目は通常のリストと似ていますが、ndarrayオブジェクトとして格納されている点が特徴です。

array([1, 2, 3])

NumPy配列を扱うには、まずnumpyライブラリをインポートします。

import numpy as np

ここでは、2つの配列を結合してみましょう。1つ目の配列には1〜9の整数、2つ目の配列には10〜18の整数を格納します。

arange()メソッドを使って、これらの配列を作成します。

first_array = np.arange(1, 10).reshape(3, 3)
second_array = np.arange(10, 19).reshape(3, 3)

print(first_array)
print(second_array)

このコードでは、2つの2次元配列を作成しています。reshape()メソッドにより、それぞれの配列が3×3のグリッド形式に変換されます。

[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[10 11 12]
 [13 14 15]
 [16 17 18]]

これで結合に使える2つの配列が準備できました。次はconcatenate()で実際に結合してみましょう。

numpy.concatenate()で配列を結合する

配列の結合は、「行方向」または「列方向」の2つの軸に対して行えます。いずれもconcatenate()メソッドで実現でき、1次元・2次元・3次元はもちろん、それ以上の高次元配列にも対応しています。

なお、結合する軸以外の形状(各次元の要素数)は、結合する配列同士で一致している必要がある点に注意してください。

行方向(axis=0)に結合する

まずは、2つの配列を行方向に結合します。これにより、2つの配列の要素が行単位で揃えられ、1つの配列にまとめられます。

final_array = np.concatenate((first_array, second_array))
print(final_array)

concatenate()関数にはタプルを渡しています。このタプルの中に、結合したい配列を列挙します。axis引数を指定しない場合、デフォルト値のaxis=0が適用され、配列は縦方向(行が追加される形)に結合されます。

実行結果は以下のとおりです。

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]
 [13 14 15]
 [16 17 18]]

2つの配列が行方向に連結され、6行×3列の配列になりました。

列方向(axis=1)に結合する

concatenate()メソッドは、列方向の結合にも対応しています。

列方向に結合するには、新しい引数「axis」を指定します。デフォルト値は0で、これは行方向(縦方向)の結合に相当します。この値を1に変更すると、配列は横方向(列が追加される形)に結合されます。

実際に、2つの配列を列方向に結合してみましょう。

final_array = np.concatenate((first_array, second_array), axis=1)
print(final_array)

コードは先ほどの例とほぼ同じですが、axis=1を指定している点が異なります。実行すると、結果は次のようになります。

[[ 1  2  3 10 11 12]
 [ 4  5  6 13 14 15]
 [ 7  8  9 16 17 18]]

2つの配列が列方向に結合され、3行×6列の配列になりました。

3つ以上の配列を結合する

concatenate()メソッドは、任意の数の配列を結合できます。ここでは、3つの配列を横方向(axis=1)に結合してみましょう。使用する配列には、それぞれ以下の範囲の整数を格納します。

  • 1〜9(両端を含む)
  • 10〜18(両端を含む)
  • 19〜27(両端を含む)

まず、Pythonで3つの配列を定義します。

first_array = np.arange(1, 10).reshape(3, 3)
second_array = np.arange(10, 19).reshape(3, 3)
third_array = np.arange(19, 28).reshape(3, 3)

続いて、concatenate()を使って3つの配列を結合します。

final_array = np.concatenate((first_array, second_array, third_array), axis=1)
print(final_array)

concatenate()メソッドの引数として、3つの配列をタプルで渡しています。これらを結合すると、1〜27までのすべての整数を含む配列になります。

プログラムを実行すると、結果は次のとおりです。

[[ 1  2  3 10 11 12 19 20 21]
 [ 4  5  6 13 14 15 22 23 24]
 [ 7  8  9 16 17 18 25 26 27]]

3つの配列が変数「final_array」に代入されました。コンソールに出力することで、配列が正しく結合されたことを確認できます。

まとめ

NumPyのconcatenate()メソッドを使うと、2つ以上のNumPy配列を1つに結合できます。デフォルトでは縦方向(axis=0)に結合され、axis=1を指定すれば横方向に結合できます。

なお、1次元配列の結合にはvstack()hstack()といったメソッドもありますが、concatenate()の方が汎用性が高く、2次元・3次元など多次元配列の結合にも柔軟に対応できます。

これで、あなたもPythonエキスパートのようにNumPy配列を自由に結合できるようになりました!

  1. PythonのNumPy配列にソート関数を適用する方法を解説|numpy.sort()の使い方

    NumPyとはNumPyは「Numerical Python」の略称で、多次元配列オブジェクトと、それらを効率的に処理するための豊富なメソッドを提供するPythonライブラリです。NumPyを利用することで、配列に対して幅広い操作を行うことができます。また、SciPyやMatplotlibなどのパッケージと組み合わせて使われることが多く、「NumPy+Matplotlib」の組み合わせはMatLabの代替としても活用されています。NumPyはオープンソースパッケージのため、誰でも自由に利用できる点も大きな魅力です。ndarray(N次元配列)の基本NumPyパッケージの中で最も重要なオブジェク

  2. 【Python】NumPyのブロードキャストとは?配列演算のルールと具体例をわかりやすく解説

    通常、配列同士の算術演算は、両者のサイズが完全に一致しているか、互換性のある特定のサイズである場合にのみ実行できます。しかしNumPyには、サイズの異なる配列同士でも演算を可能にする「ブロードキャスト(broadcasting)」という強力な仕組みが備わっています。 ブロードキャストでは、次元数(ndim)が小さい方の配列の形状の先頭に「1」を追加して拡張することで、演算対象となる配列同士の形状を揃えます。つまり、ブロードキャストとは、配列の形状を演算に必要な形状へ自動的に変換する機能のことです。 配列ブロードキャストのルール 他方の配列より次元数(ndim)が小さい配列は、その形状の先頭に