Scipyというライブラリをよく目にしませんか?
もしTensorFlowを利用していれば、間接的にScipyを利用していることになります。
TensorFlowの依存ライブラリには、Scipyが存在しています。
そのため、TensorFlowをインストールすれば、Scipyも自動的にインストールされます。
実は、機械学習をする人には、Scipyは身近な存在だったのです。
このScipyを私たちが直接利用することはあるのでしょうか?
本記事の内容
- Scipyとは?
- Scipyのシステム要件
- Scipyのインストール
- Scipyの動作確認
それでは、上記に沿って解説していきます。
Scipyとは?
Scipyの読み方は、「サイパイ」となります。
SciPyは、数学・科学・工学のための数値解析ソフトウェアです。
オープンソースとして、常時開発が行われています。
また、世界をリードする科学者やエンジニアに多く利用されています。
研究分野では、高度な科学技術計算が必要とされるからなのでしょう。
では、具体的にはどのような科学技術計算が可能なのでしょうか?
Scipyのサブモジュール単位で確認します。
scipy.cluster | クラスター分析 |
scipy.constants | 物理定数 |
scipy.fft | 離散フーリエ変換 |
scipy.integrate | 数値積分 |
scipy.interpolate | 補間 |
scipy.io | データ入出力 |
scipy.linalg | 線形代数 |
scipy.misc | その他ルーチン |
scipy.ndimage | 多次元画像処理 |
scipy.odr | 直交距離回帰 |
scipy.optimize | 数理最適化 |
scipy.signal | 信号処理 |
scipy.sparse | 疎行列 |
scipy.spatial | 空間的データ構造とアルゴリズム |
scipy.special | 特別機能 |
scipy.stats | 統計機能 |
上記を確認すると、どこかで見たことのあるキーワードが存在しています。
例えば、線形代数は普通に高校数学で出てきましたね。
高度な科学技術計算と言えども、馴染のある計算もあります。
決して、科学者だけが利用するようなモノではないということです。
それに、全然馴染みがなくても、便利な関数があれば使っていけばいいだけです。
以上、Scipyで行える計算処理の雰囲気はつかめたと思います。
次は、Scipyのシステム要件を確認します。
Scipyのシステム要件
Scipyの最新バージョンは、1.6.0となります。
この最新バージョンは、2020年12月31日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
次は、ちょっと注意が必要です。
サポート対象のPythonのバージョンが、以下となっています。
- Python 3.7
- Python 3.8
- Python 3.9
比較的新しいPythonにしか対応していません。
3.6も切り捨てているのは、少し驚きです。
念のためにPythonのバージョンを確認。
>python -V Python 3.8.6
問題ありませんね。
以上、Scipyのシステム要件でした。
では、Scipyをインストールしていきましょう。
Scipyのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 20.3.3 setuptools 51.1.2
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、Scipyのインストールです。
Scipyのインストールは、以下のコマンドとなります。
pip install scipy
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- numpy 1.19.5 pip 20.3.3 scipy 1.6.0 setuptools 51.1.2
scipyは最新版が、インストールされています。
あと、numpyもインストールされています。
確かに、ScipyはNumPyを依存ライブラリとしています。
NumPy配列を用いて、計算処理を行います。
だから、numpy 1.19.5がインストールされているのも納得。
最後に、Scipyの動作確認を行いましょう。
Scipyの動作確認
逆行列を求める関数が、Scipyには用意されています。
それを使って、動作確認を行います。
元となる行列は、以下。
この行列の逆行列を求めます。
import numpy as np from scipy import linalg A = np.array([[1,3,2],[-1,0,1],[2,3,0]]) AI = linalg.inv(A) print(AI)
上記コードの実行結果は、以下。
[[ 1. -2. -1. ] [-0.66666667 1.33333333 1. ] [ 1. -1. -1. ]]
正式な回答は、以下。
小数点と分数での表記の違いはあれど、結果は同じです。
動作確認としては、これで十分でしょう。
以上、Scipyの動作確認でした。