SciPyでの疎行列(sparse matrix)の膨大な量のデータ前処理
目次 1. 疎行列(sparse matrix)の概要 2. 密行列(dense matrix) 3. 疎行列の処理 ―3.1 COO方式 ―3.2 CSR方式 ―3.3 CSC方式 4. まとめ 1. 疎行列(sparse matrix)の概要 疎行列とは、ほとんど行列の要素がゼロであるような行列です。行列内のほとんどが0という特徴から、0を無視する工夫をすれば、メモリや計算速度を節約が可能になります。疎行列ではない、よくある行列を「密行列」(dense matrix)と呼ぶこともあります。数値計算や機械学習や自然言語処理など幅広い分野で扱われています。 以下の図は10×10の密行列と10×10の疎行列になります。8割近くが0の疎行列で非ゼロ部分だけ用いて計算すれば、計算時間が約2/10になり計算が早く終わらせることが可能になります。 PythonのSciPyライブラリには、疎行列を作成、保存、操作するための多くのオプションがあります。PythonのScipyを用いて、疎行列計算について解説していきます。 密行列(dense matrix) 85、90、99ゼロ率の10,000 x 10,000密行列のデータを作成します。 # Create Sparse Data import numpy as np from scipy import sparse from scipy.stats import uniform from sys import getsizeof np.random.seed(seed=42) array = uniform.rvs(size=100000000, loc = …