LoginSignup
19

More than 5 years have passed since last update.

【Python入門】絶対に知っとくべきライブラリscipyの基本的な使い方

Posted at

※こちらの記事は、プロスタ編集部が現在大変人気の高い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をもっと使ってみたい方は公式ドキュメントなども参考にしてください。
公式ドキュメント

おすすめ記事
Pythonの本・参考書の評判
Pythonを学びたい方は必見!おすすめスクールまとめ5選

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19