オーダーメイドコース
icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

PythonにSciPyをインストールする方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

SciPyを使えるようになると、高度な数学の計算を簡単に処理できるようになります。

実務でも、NumPyを利用していた計算処理をSciPyに置き換えて実行しているので、ぜひ学習してみてください。

目次

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

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

お願いします!

 

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

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

 

SciPyとは?

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

SciPyは、配列や行列の計算を行うことのできるライブラリであるNumPyを使って開発されたものです。

SciPyは、微分積分、信号処理や統計といった比較的高度な数学の計算を可能にしてくれるライブラリです。

 

SciPyのインストール

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

SciPyをインストールするには、Anaconda経由でインストールする方法と、pipを使ってインストールする方法の2通りがあります。

 

Anacondaを利用する

特にこだわりがない場合には、公式のドキュメントによるとAnacondaを使うと良いと書かれています。

Anacondaを利用する場合には、効率的に開発!AnacondaでPythonの環境構築する方法 を参考にしてみてください。

1.基本的なインストールの方法としては、AnacondaのEnvironmentsタブで、SciPyを検索してインストールします。

2.インストールが完了したら2.のように表示されます。

pipを利用する

pipを使う場合には、次のコマンドでインストールすることが推奨されています。

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

 

[PR] 未経験からWebエンジニアを目指す方法とは

SciPyの使い方

今回は、SciPyを利用した数値積分、フーリエ変換について紹介します。

なお、SciPyには様々なツールが用意されているので、すべてを紹介することができないことお許しください。

 

数値積分

ここでは、数値微分を紹介します。

数値積分を行うには、integrateモジュールを使います。

いくつかの積分計算方法がありますが、ここでは簡単なquad()関数を使った積分について説明します。

quad()関数を使って積分を行うには、まずは積分したい関数を定義して、次のような処理を行います。

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

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

フーリエ変換

ここでは、フーリエ変換について紹介します。

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

フーリエ変換を行うには、fftpackモジュールを使います。

fft()関数を使って、次のように実装します。

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

fft(関数)

 

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

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

 

SciPyをインストールして数値積分してみよう

ここでは、SciPyを使った数値積分を実践してみます。

Jupyterを使うと実行の結果が保存されて非常に便利なので、ぜひ使ってみてください。

Anacondaを利用すると、JupyterLabやJupyterNotebookを簡単に利用できるので、効率的に開発!AnacondaでPythonの環境構築する方法 を参考にしてみてください。

 

1.次のコードで、SciPyからintegrateモジュールをインポートします。

from scipy import integrate

 

2.次に、関数を定義します。

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

これは、以下のような積分の計算です。

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

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

 

3.数値積分サンプルプログラム

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

integrate.quad(pi_function, 0, 1)

 

4.数値積分実行結果

integrate.quad(pi_function, 0, 1)を実行すると、次のような結果が表示されます。

(3.1415926535897936, 3.4878684980086326e-14)

 

5.数値積分解説

quad()関数は2つの返り値を持ちます。

1つ目の3.1415926535897936が積分の計算値です。

もう1つの3.4878684980086326e-14が、計算の誤差の値です。

e-14というのは、3.4878684980086326の1/10 の 14 乗を意味する指数表現です。

指数表現を、わかりやすく別の数字で説明すると、1.2e-4であれば、1.2 × 1/10 の 4 乗である、0.00012を意味します。

2.次に、関数を定義します。で解説しているように、1つ目の値はほぼ円周率πと同じ値です。

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

 

SciPyをインストールしてフーリエ変換してみよう

ここでは、SciPyを使ったフーリエ変換を実践してみます。

Jupyterを使うと実行の結果が保存されて非常に便利なので、ぜひ使ってみてください。

Anacondaを利用すると、JupyterLabやJupyterNotebookを簡単に利用できるので、効率的に開発!AnacondaでPythonの環境構築する方法 を参考にしてみてください。

 

1.次のコードで、SciPyライブラリからfftモジュールをインポートしてください。

加えて、matplotlibもインポートします。

これを使って、計算結果をグラフ化します。

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

 

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

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

 

3.フーリエ変換サンプルプログラム

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

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

 

4.フーリエ変換可視化プログラム

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()

 

5.実行結果

実行すると次のような画像が出てくると思います。

上がもとの関数で、下がフーリエ変換後の画像です。

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

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

 

まとめ

以上、Pythonの科学技術計算ライブラリであるSciPyについて解説しました。

SciPyは、NumPyを利用していた計算処理を、より使いやすくした計算ライブラリでした。

SciPyで、数値積分を行ってみました。

SciPyで、フーリエ変換を行ってみました。

今回は取り上げきれなかった内容もたくさんあるので、必要に応じて調べて実践してみるとさらにご理解を深めていただくことができます。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

Pythonを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!