Pythonで稠密行列と疎行列の操作をマスターする

この記事では、Pythonを用いて稠密行列(Dense Matrix)と疎行列(Sparse Matrix)の操作方法を詳細に説明します。具体的なコード例、その解説、応用例を含めています。

目次

はじめに

行列はデータ処理、特に機械学習や科学計算で頻繁に使用されます。しかし、稠密行列と疎行列という二つの異なる形式があり、それぞれ適した用途と特性があります。この記事では、PythonのライブラリであるNumPyとSciPyを用いた、稠密行列と疎行列の操作方法を学びます。

稠密行列とは

稠密行列は、ほとんどの要素がゼロでない行列です。Pythonでの稠密行列の操作には、NumPyが一般的に使用されます。

基本的な操作

以下は、NumPyを用いた稠密行列の基本的な操作です。

import numpy as np

# 行列を作成
mat = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 行列の要素にアクセス
element = mat[0, 1]  # 2となる

行列の演算

NumPyを使って、行列の加算、減算、乗算を行います。

# 加算
sum_mat = mat + mat

# 減算
diff_mat = mat - mat

# 乗算
prod_mat = np.dot(mat, mat)

疎行列とは

疎行列は、ほとんどの要素がゼロである行列です。疎行列の操作には、SciPyがよく用いられます。

基本的な操作

以下は、SciPyを用いた疎行列の基本的な操作です。

from scipy.sparse import csr_matrix

# 疎行列を作成
sparse_mat = csr_matrix([[1, 0, 0], [0, 2, 0], [0, 0, 3]])

# 行列の要素にアクセス
element = sparse_mat[0, 0]  # 1となる

行列の演算

SciPyを使って、疎行列の加算、減算、乗算を行います。

# 加算
sum_sparse = sparse_mat + sparse_mat

# 減算
diff_sparse = sparse_mat - sparse_mat

# 乗算
prod_sparse = sparse_mat.dot(sparse_mat)

応用例

画像処理における稠密行列の応用

稠密行列は画像処理でよく用いられます。以下は、画像の輝度値を調整する例です。

# グレースケール画像と仮定
image = np.array([[100, 120], [130, 140]])

# 輝度値を2倍に
adjusted_image = image * 2

自然言語処理における疎行列の応用

疎行列は、テキストデータを数値ベクトルに変換する際に有用です。以下は、単語の出現頻度を疎行列で表す例です。

from sklearn.feature_extraction.text import CountVectorizer

# テキストデータ
texts = ["apple orange orange", "banana apple", "cherry cherry apple"]

# CountVectorizerを使って疎行列に変換
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)

まとめ

Pythonにおける稠密行列と疎行列の操作には、NumPyとSciPyがそれぞれ有用です。稠密行列は画像処理、疎行列はテキストデータのような特定の用途で力を発揮します。

コメント

コメントする

目次