Pythonにscipyをインストールする方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonにscipyをインストールする方法について現役エンジニアが解説しています。scipyはPythonの科学技術計算ライブラリです。インストール方法には、anaconda経由、あるいはpipを使ってインストールする方法があります。サンプルとして積分・フーリエ変換を行ってみます。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

Pythonにscipyをインストールする方法について解説します。scipyを使えるようになると高度な数学の計算を簡単に処理することができるようになります。ぜひ参考にしてみてください。

そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonにscipyをインストールする方法について詳しく説明していくね!

大石ゆかり

お願いします!

この記事は、Pythonにおける科学計算においてよく使われるscipyというライブラリにつて解説したものです。

機械学習などでもscipyが使われていることが多いので、人工知能に興味がある人も一度学習しておくと良いでしょう。

scipyとは?

scipyとはPythonの科学技術計算ライブラリです。

scipyは配列や行列の計算を行うことのできるライブラリであるnumpyを使って開発されたもので、微分積分、信号処理や統計といった比較的高度な数学の計算を可能にしてくれるライブラリです。

scipyのインストール

まずは、scipyをインストールしてみましょう。

scipyをインストールするには、anaconda経由でインストールする方法と、pipを使ってインストールする方法の2通りがあります。特にこだわりがない場合には、公式のドキュメントによるとanacondaを使うと良いと書かれています。

anacondaを使ってインストールする場合には、こちらからインストールしてください。

pipを使う場合には、

python -m pip install --user numpy scipy matplotlib ipython jupyter pandas sympy nose

でインストールすることが推奨されています。実行して、Successfully Installedが表示された後、

pip list

を実行し、scipyがインストールされていることを確認してください。

[PR] Pythonで挫折しない学習方法を動画で公開中

scipyの使い方

scipyには様々なツールが用意されているので、それらをすべて紹介することはできませんが、ここでは、数値積分、フーリエ変換について紹介します。

まずは、数値微分です。数値積分を行なうには、integrateモジュールを使います。いくつかの積分計算方法がありますが、ここでは簡単なquad()関数を使った積分について説明します。

quad()関数を使って積分を行うには、まずは積分したい関数を定義して、

quad(積分したい関数, 積分区間始まり, 積分区間終わり)

というように書けば、複雑なコードを書くことなく数値積分がかんたんにできます。

続いてはフーリエ変換についてです。フーリエ変換というのは、ある関数を正弦関数(サイン)や余弦関数(コサイン)といった周期的な関数を使って周波数成分に分解することで、関数を解析する方法です。

フーリエ変換を行なうには、fftpackモジュールを使います。fft()関数を使って、

fft(関数)

とすれば、これだけでフーリエ変換ができます。

他にも、統計解析に便利なstatsモジュールや、微分方程式を解くことのできるodeint()という積分器などもあります。

詳しく知りたい方は、scipyのドキュメントを参照してみるよ良いでしょう。

scipyをインストールして数値計算してみよう

それでは、scipyを使った数値計算を実践してみます。Jupyterノートブックを使うと実行の結果が保存されて非常に便利なので、ぜひ使ってみてください。

まずは、scipyからintegrateモジュールをインポートします。

from scipy import integrate

次に、関数を定義してください。

def pi_function(x):
  return 4/(1+x**2)

これは、

scipyで計算する、積分の公式。

という積分の計算です。この積分の値は円周率の値になることが知られています。

scipyを使うと積分計算が次のようにできます。

integrate.quad(pi_function, 0, 1)

これを実行すると、

(3.1415926535897936, 3.4878684980086326e-14)

のような結果が表示されると思います。

quad()関数は2つの返り値を持ち、1つ目が積分の計算値です。もう一つが、計算の誤差の値です。予告したとおり、1つ目の値はほぼ円周率πと同じ値です。

ただし、円周率などの無理数の値を計算するのには限界があるので、返り値の二番目のような誤差が生じるので注意してください。

次は、フーリエ変換を書いてみます。

先ほどと同様に、scipyライブラリからfftモジュールをインポートしてください。加えて、matplotlibもインポートします。これを使って計算結果をグラフ化します。

from scipy.fftpack import fft
import matplotlib.pyplot as plt

必要な定数を決めておきます。

N = 2**20 # データの数
dt = 0.0001 # 単位時間[s]
t = np.arange(0, N*dt, dt) # 時間
freq = np.linspace(0, 1.0/dt, N) # 周波数

次のコードを使ってフーリエ変換したい関数と、そのフーリエ変換を計算します。

y = np.sin(2*np.pi*5*t)
yf = fft(y)/(N/2) # 離散フーリエ変換&規格化

結果を可視化してみましょう。

plt.figure(2)
plt.subplot(211)
plt.plot(t, y)
plt.xlim(0, 1)
plt.xlabel("time")
plt.ylabel("amplitude")
plt.subplot(212)
plt.plot(freq, np.abs(yf))
plt.xlim(0, 10)
#plt.ylim(0, 5)
plt.xlabel("frequency")
plt.ylabel("amplitude")
plt.tight_layout()
plt.show()

実行すると次のような画像が出てくると思います。上がもとの関数で、下がフーリエ変換後の画像です。

scipyで作成したフーリエ変換の画像

このように、フーリエ変換も実践することができます。

以上、Pythonの科学技術計算ライブラリであるscipyについて解説しました。今回は取り上げきれなかった内容もたくさんあるので、必要に応じて調べて実践してみると良いでしょう。

監修してくれたメンター

小倉翔悟(おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。

プログラミング歴は約3年でPythonは割と得意。好きな物理理論は一般相対性理論で動物も好き。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間でPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。