※こちらの記事は、プロスタ編集部が現在大変人気の高いPythonの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。
参考サイト:【Python入門】絶対に知っとくべきライブラリscipyの基本的な使い方
#【Python入門】絶対に知っとくべきライブラリscipyの基本的な使い方
Pythonには便利なライブラリが数多く存在し、scipyもそのうちの1つです。scipyは高度な科学計算を行うためのライブラリです。似たようなライブラリでnumpyが存在しますが、scipyではnumpyで行える配列や行列の演算を行うことができ、加えてさらに信号処理や統計といった計算ができるようになっています。
今回はscipyの基本的な使い方について説明します。
目次
1 scipyのインストール
1.1 numpyのインストール
1.2 scipyのインストール
2 scipyを使う
2.1 積分
2.2 行列演算
##scipyのインストール
###numpyのインストール
scipyを使うにはnumpyが必要ですので、最初にnumpyをインストールしておきましょう。
※numpyのインストール方法
###scipyのインストール
続いてscipyをインストールします。scipyはpipコマンドでインストールすることができます。
pip install scipy
もしpipでインストールできない場合は以下のページからScipyをダウンロードし、ダウンロードしたファイルをpipコマンドでインストールしてください。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
pipコマンド
pip install さきほどダウンロードしたファイルのパス
scipyにはいくつかのバージョンがあるので、自分のpythonやOSにあったバージョンをダウンロードしてください。例えば「scipy‑0.18.1‑cp36‑cp36m‑win_amd64.whl」というファイルはpython3.6、64ビットのWindows向けとなっています。
##scipyを使う
scipyをインストールしたら、さっそく使ってみましょう。ただ、scipyには数えきれないほどの機能があるため、とてもすべてを紹介することはできません。ここでは、よく使われるほんの一部の機能を紹介します。
###積分
scipyを使えば関数の積分(定積分)が簡単に行えます。積分をするにはscipy.integrateモジュールのquad()を使います。
from scipy import integrate #必ず必要
変数1, 変数2 = integrate.quad(関数, 積分区間の始まり, 積分区間の終わり)
quad()は与えられた関数を[区間の始まり, 区間の終わり]の区間で定積分し、2つの値を返します。変数1には積分した結果が、変数2には積分計算をした際の誤差が返されます。
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))
実行結果
積分結果:50.0
誤差:5.551115123125783e-13
難しいのでここでは省略しますが、定積分だけでなく2次元の積分や微分方程式などの高度な演算を行うこともできます。
###行列演算
行列の演算はnumpyでもできましたが、scipyを使えばより高度な演算ができます。行列の演算には線形代数用の機能をまとめたscipy.linalgを使います。
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))
実行結果
narrayの逆行列:
[[-2. 1. ]
[ 1.5 -0.5]]
inv_narrayの行列式:-0.49999999999999967
inv_narrayのノルム:2.73861278752583
scipyではこの他にも信号処理や画像解析、統計処理、フーリエ変換など高度な科学計算を簡単に行うことができます。その数は膨大でここではすべて説明できませんので、scipyをもっと使ってみたい方は公式ドキュメントなども参考にしてください。
公式ドキュメント