- 公開日:2017-1-24 最終更新日:2017-2-7
- プロナビTOP / プログラミング初心者向け技術系ノウハウ・まとめ

Pythonには便利なライブラリが数多く存在し、scipyもそのうちの1つです。scipyは高度な科学計算を行うためのライブラリです。似たようなライブラリでnumpyが存在しますが、scipyではnumpyで行える配列や行列の演算を行うことができ、加えてさらに信号処理や統計といった計算ができるようになっています。
今回はscipyの基本的な使い方について説明します。
scipyのインストール
numpyのインストール
scipyを使うにはnumpyが必要ですので、最初にnumpyをインストールしておきましょう。
※numpyのインストール方法
scipyのインストール
続いてscipyをインストールします。scipyはpipコマンドでインストールすることができます。
1 |
pip install scipy |
もしpipでインストールできない場合は以下のページからScipyをダウンロードし、ダウンロードしたファイルをpipコマンドでインストールしてください。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
pipコマンド
scipyにはいくつかのバージョンがあるので、自分のpythonやOSにあったバージョンをダウンロードしてください。例えば「scipy‑0.18.1‑cp36‑cp36m‑win_amd64.whl」というファイルはpython3.6、64ビットのWindows向けとなっています。
scipyを使う
scipyをインストールしたら、さっそく使ってみましょう。ただ、scipyには数えきれないほどの機能があるため、とてもすべてを紹介することはできません。ここでは、よく使われるほんの一部の機能を紹介します。
積分
scipyを使えば関数の積分(定積分)が簡単に行えます。積分をするにはscipy.integrateモジュールのquad()を使います。
1 2 3 |
from scipy import integrate #必ず必要 変数1, 変数2 = integrate.quad(関数, 積分区間の始まり, 積分区間の終わり) |
quad()は与えられた関数を[区間の始まり, 区間の終わり]の区間で定積分し、2つの値を返します。変数1には積分した結果が、変数2には積分計算をした際の誤差が返されます。
1 2 3 4 5 6 7 8 9 |
from scipy import integrate #2x+5を表している def func(x): return 2*x + 5 result, err = integrate.quad(func, 0, 5) print('積分結果:{0}\n誤差:{1}'.format(result, err)) |
実行結果
誤差:5.551115123125783e-13
難しいのでここでは省略しますが、定積分だけでなく2次元の積分や微分方程式などの高度な演算を行うこともできます。
行列演算
行列の演算はnumpyでもできましたが、scipyを使えばより高度な演算ができます。行列の演算には線形代数用の機能をまとめたscipy.linalgを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
rom scipy import linalg import numpy as np #numpyを使う narray = np.array([[1, 2], [3, 4]]) #numpyのarrayで行列を表現 inv_narray = linalg.inv(narray) print('narrayの逆行列:\n{}\n'.format(inv_narray)) result_det = linalg.det(inv_narray) print('inv_narrayの行列式:{}\n'.format(result_det)) inv_narray_norm = linalg.norm(inv_narray) print('inv_narrayのノルム:{}'.format(inv_narray_norm)) |
実行結果
[[-2. 1. ]
[ 1.5 -0.5]]
inv_narrayの行列式:-0.49999999999999967
inv_narrayのノルム:2.73861278752583
scipyではこの他にも信号処理や画像解析、統計処理、フーリエ変換など高度な科学計算を簡単に行うことができます。その数は膨大でここではすべて説明できませんので、scipyをもっと使ってみたい方は公式ドキュメントなども参考にしてください。
公式ドキュメント:https://docs.scipy.org/doc/scipy/reference/
【おすすめ記事】
➡Pythonの本・参考書の評判
➡Pythonを学びたい方は必見!おすすめスクールまとめ5選
➡【無料で使える】Pythonを勉強できる学習サイト7つ
➡Pythonのコーディングにオススメな無料テキストエディタまとめ
➡【Python入門】Pythonにおけるclassの使い方とは?