Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

Pythonを使ってすぐに(30分で)数値演算!! できない人への説明 | Windowsでnumpy+scipy+matplotlib

Pythonを使ってすぐに数値演算と思ってもできない人への説明 | numpy+scipy+matplotlib

f:id:hope_is_dream:20141130210225p:plain

こんにちわ。

ふぃふぃです。

ふと、数値演算をしたくなったりします。

ちまたには、RやOctaveといったツールがありますが、

「僕はどうしてもpythonでやりたい!!」

そんな人のために、windowsで数値演算環境を整える方法をまとめました。

30分あればできるはずです。

注意

cygwinmingwは使ってません。

どうやらcygwinを使ってインストールするには、ビルドやらなんやらで、難易度が上がるそう。

(僕は何度か断念...)

環境構築にその他のスキルが必要になってくると、勉強としては言いのですが、

肝心の数値演算までいけないかもしれないので、

「まずは!」

環境構築して、動かして、演算させて、答えを得て、

それでも、必要であればcygwinmingwを使ってLinux系の環境を作ればいいかと思い

できるだけwindowsの知識だけでの環境構築方法をまとめました。

Pythonのバイナリリス

「Unofficial Windows Binaries for Python Extension Packages」 http://www.lfd.uci.edu/~gohlke/pythonlibs/

python関連のパッケージがリストされているので、.exeをここから探してダウンロードします。(ブックマークしておくと便利)

0. Pythonのインストール

本家よりダウンロードしてきます。

Welcome to Python.org

今回インストールするヴァージョン

Version 2.7.8

Proceccer 32bit

パスを通す

ここでパスを通していないと、以後が辛くなるので、

ちょっと頑張って見てください。

参考リンクを張って置きます

環境変数PATHの設定 - 環境設定と動作確認 - Pythonインストールと環境設定

もし成功していたなら、コマンドプロンプトからpythonと打つとどこでもpythonが立ち上がると思います。

余談

今回は2.7系を32bitのwindowsにインストールしますので、各インストーラ

(パッケージ名)‑**.win32‑python2.7.exe

がインストールする対象となります。

1. Package Managerのインストール

1.1 easy installのインストール

まずはeasy installをインストール

[https://bootstrap.pypa.io/ez_setup.py]

easy installはテキストファイルなので、ez_setup.pyと名前をつけて、適当なフォルダにダウンロードし

python ez_setup.py

とすることでインストールできます。

僕はC:\Python27\ez_setupに保存しました。

Windowコマンドプロンプトを使い慣れない人のために、コマンドも紹介して置きます。

フォルダの移動

cd C:\Python27

フォルダの中身を調べる

dir

ez_setup.pyがあることを確認し

python ez_setup.py

インストールできましたでしょうか。

pipC:\Python27\Script\にありますので、pipを利用するときにはcd C:\Python27\Script\としてフォルダを移動しないと使えないので注意。

1.2 pip

easy installをインストール後easy_installコマンドでpipをインストールします。

easy_install pip

2. 数値演算パッケージのインストール

さて、折り返し地点に来ました。

残り半分です

頑張りましょう。

2.1 numpyのインストール

行列演算用のパッケージnumpyをインストールします。

二種類の方法があり、

2.1.1 バイナリファイルを使ってインストール

numpy‑MKL‑1.9.1.win32‑py2.7.exe

or

2.1.2 pipを使ってインストール

cd C:\Python27\Script\
pip install numpy

numpyがインストールされたかテスト

[http://www.labri.fr/perso/nrougier/teaching/numpy.100/index.html:title]

こちらの100 numpy exercisesを参考に試します。例えばpythonを立ち上げて

>>>import numpy as np
>>> Z = np.zeros(10)
>>> print Z

これでzeroが10個表示されていれば成功です。

[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]

2.2 scipyのインストール

2.2.1 バイナリファイルを使ってインストール

[scipy‑0.15.0b1.win32‑py2.7.exe](http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy)

or

2.1.2 pipを使ってインストール

cd C:\Python27\Script\
pip install scipy

scipyがインストールされたかテスト

[http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/optimize.html]

import numpy as np
from scipy.optimize import minimize

def rosen(x):
    """The Rosenbrock function"""
    return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)

x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
res = minimize(rosen, x0, method='nelder-mead',options={'xtol': 1e-8, 'disp': True})

print(res.x)

エラーがでなければ、大丈夫だと思います。

2.3 matplotlibのインストール

さてここまではうまくいってますでしょうか?

良く躓くのがここからです。

matplotlibを動かすためには、いくつか他のツールをインストールする必要があり、そのままでは動かないことがあります。

2.3.1 matplotlibのインストール

matplotlib‑1.4.2.win32‑py2.7.exe

テストコードを動かす

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def data_gen():
    t = data_gen.t
    cnt = 0
    while cnt < 1000:
        cnt+=1
        t += 0.05
        yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
data_gen.t = 0

fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 5)
ax.grid()
xdata, ydata = [], []
def run(data):
    # update the data
    t,y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()

    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata)

    return line,

ani = animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,
    repeat=False)
plt.show()

このコードを適当にex_matplot.pyなどの名前にして適当な場所に保存

僕はC:\Python27\test\と言うフォルダを作って保存しました

その後、実行して見ます。

cd C:\Python27\test\
python ex_matplot.py

ただしこれだけでは動かないと思います。

エラーを良く見るとパッケージの名前が書いているので、

それをインストールします。

2.3.2 その他のパッケージのインストール

six

six‑1.8.0.win32‑py2.7.exe

Python-Dateutil

python‑dateutil‑2.2.win32‑py2.7.exe

pyparsing

pyparsing‑2.0.3.win32‑py2.7.exe

ここまででとりあえず、サンプルは動くと思います。

(補足)

バイナリリストで確認すると、

http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib

Matplotlib is a 2D plotting library. Requires numpy, dateutil, pytz, pyparsing, six, setuptools, and optionally pillow, pycairo, tornado, wxpython, pyside, pyqt4, ghostscript, miktex, ffmpeg, mencoder, avconv, or imagemagick.

その他のパッケージが必要みたい。

恐らく、

pip install numpy, python-dateutil, pytz, six, pyparsing

とかするといちいちバイナリリストから.exeをダウンロードしなくても良いのだと思います。

ただし、pipでインストールするパッケージ名はちょこっと違うことがあるので、

cd C:\Python27\Script
pip search dateutil

などをつかって調べながらすると良いと思います。

以上です。

さて

やっと

本質である、数値演算ができますね。

参考

python バイナリリスト」

http://www.lfd.uci.edu/~gohlke/pythonlibs/

「numpy 100サンプル」

http://www.labri.fr/perso/nrougier/teaching/numpy.100/index.html

「Scipy.org チュートリアル

http://docs.scipy.org/doc/scipy-0.14.0/reference/tutorial/index.html

pythonを愛用している研究者のページ」

http://www.labri.fr/perso/nrougier/teaching/index.html

pythonを使ったVisualizationについてのかっこいい紹介pdf」

http://www.labri.fr/perso/nrougier/downloads/ScientificVisualization.pdf