イントロダクション
numpy配列には基本的なデータ構造として配列が含まれています。配列の結合は、複数の配列を1つの配列に連結することで、重要なデータ処理のステップの1つです。本記事では、numpy配列を使った配列結合について解説します。
結合の基本
配列の縦方向の結合
numpy配列のconcatenate
関数を使って、配列を縦方向に連結します。以下のように記述します。
import numpy as np
# 2つの1次元配列の生成
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 配列の結合
result = np.concatenate([arr1, arr2])
print(result)
[1 2 3 4 5 6]
配列の横方向の結合
配列を横方向に連結するには、axis
引数に1
を指定します。以下のように記述します。
import numpy as np
# 2つの1次元配列の生成
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# 配列の結合
result = np.concatenate([arr1.reshape(3, 1), arr2.reshape(3, 1)], axis=1)
print(result)
[[1 4]
[2 5]
[3 6]]
配列の形状の変化
配列を連結することで、元の配列の形状が変化します。
次の例では、次元数の異なる2つの1次元配列を連結して、2次元配列を作成しています。
import numpy as np
# 2つの1次元配列の生成
arr1 = np.array([1, 2, 3])
arr2 = np.array([[4], [5], [6]])
# 配列の結合
result = np.concatenate([arr1.reshape(3, 1), arr2], axis=1)
print(result)
[[1 4]
[2 5]
[3 6]]
行列の演算
行列の積の計算
2つの配列を行列として考え、行列の積を計算します。次の例では、dot
関数を使用して、arr1
とarr2
の行列の積を計算しています。
import numpy as np
# 2つの2次元配列の生成
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[1], [2], [3]])
# 行列の積の計算
result = arr1.dot(arr2)
print(result)
array([[14],
[32]])
行列の転置
2次元配列に対して、行と列を入れ替えて新たな2次元配列を作成することを、行列の転置と言います。次の例では、transpose
関数を使用して、arr1
の転置行列を計算しています。
import numpy as np
# 2つの2次元配列の生成
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
# 転置行列の生成
result = arr1.transpose()
print(result)
array([[1, 4],
[2, 5],
[3, 6]])
データ処理
3つの配列を連結する
numpy配列を使って、3つの配列を連結する方法を紹介します。次の例では、stack
関数を使用して、3つの配列を縦方向に連結しています。
import numpy as np
# 3つの1次元配列の生成
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])
# 配列の結合
result = np.stack([arr1, arr2, arr3])
print(result)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
2次元配列の整形
次の例では、1次元配列を2次元配列に変換する方法を紹介します。元の1次元配列をreshape
関数を使って2次元配列に変換しています。
import numpy as np
# 1次元配列の生成
arr1 = np.array([1, 2, 3, 4, 5, 6])
# 2次元配列の生成
result = arr1.reshape(2, 3)
print(result)
array([[1, 2, 3],
[4, 5, 6]])
高速化
broadcastingの使用
次の例では、ブロードキャストを使って、小さい配列を大きな配列に拡張しています。ブロードキャストは、配列の形状を自動的に変換することができ、高速なデータ処理を可能にします。
import numpy as np
# 2つの1次元配列の生成
arr1 = np.array([1, 2, 3])
arr2 = np.array([4])
# ブロードキャストによる配列の拡張
result = arr1 + arr2
print(result)
array([5, 6, 7])
ケーススタディ
2つの配列の結合
次の例は、実際のデータ処理において、numpy配列の結合がどのように使用されるかを示します。2つのcsvファイルを読み込み、numpy配列の結合を使用して、1つの配列にまとめています。
import numpy as np
import pandas as pd
# データの読み込み
df1 = pd.read_csv("input1.csv")
df2 = pd.read_csv("input2.csv")
# pandasからnumpyに変換
arr1 = df1.values
arr2 = df2.values
# 配列の結合
result = np.concatenate([arr1, arr2])
print(result)
結論
numpy配列を使用した配列の結合は、複雑なデータ処理を行う上で非常に便利であることがわかりました。numpy配列の結合を上手く使用することで、データ処理の高速化や処理の簡素化、コードの可読性などを向上させることができます。
コメント