第1回 Jupyter notebookに慣れる

1. IPythonとJupyterとは

IPython

IPythonはPythonを対話的に動作させるためのプラットフォームです.たとえばある文を入力した直後に結果を確認するといったように,インタラクティブに結果を確認しながらプログラミングしていくことができます.

Jupyter notebookとは

IPythonをWebベースで実行するためのプラットフォームです.ソースコードを書くだけでなく,その場で結果を表示したり,一般的なテキストや画像,HTMLなどを1つのページ内に混在させることができます.

2. notebookを実行してみよう

この演習では,時間の都合上notebookやPythonの詳しい使い方については説明しません(もちろん個別にサポートします).詳細な使い方はWebや参考書で各自勉強することをお勧めします.

取り急ぎ,notebookを体験してみるということで, Hello World プログラムを実行してみましょう.

notebookを開始するには,ターミナルで以下のコマンドを入力します.

ipython notebook

notebookを開始したら,新しいファイルを作成し,セルと呼ばれる領域に,次の式を入力し,Shift+Enterを押してみてください.


In [1]:
print ("Hello" + ", World")
print(10 + 4)


Hello, World
14

正しく動作すれば,画面に

Hello, World
14

と表示されたはずです.このように,IPython + Jupyter notebook 環境では,Webベースで対話的に実行結果を確認しながらプログラミングをすることができます.

3. numpy + matplotlib チュートリアル

それでは,IPython + Jupyter notebook環境に慣れるという目的で,以下のコードを自分のNotebook環境で入力しながら,このページと同じような結果が得られるか確認してみましょう. このチュートリアルは,異なる種類の確率分布から得られたデータを散布図として表示するというプログラムになっています. 実際にコードを実行しながら, python および notebook の雰囲気に慣れてください.


In [2]:
import numpy as np # numpy モジュールのインポート
import matplotlib.pyplot as plt # pyplotモジュールのインポート

In [3]:
%matplotlib inline

In [4]:
# 平均 x = -2, y = -2 の2変量正規分布からデータを100個サンプリングする
mean = [-2,-2]
cov = [[1,0],[0,1]]
x1,y1 = np.random.multivariate_normal(mean, cov, 100).T

In [5]:
# サンプリングしたデータの xとy の値 10件を確認してみる
x1[:10], y1[:10]


Out[5]:
(array([-3.97624299, -2.17401958, -3.37789811, -1.96820567, -1.8974589 ,
        -1.87691603, -0.10033601,  0.09274902, -0.33809031, -1.55257427]),
 array([-1.32558028, -1.52988729, -1.36387475, -2.77620137,  0.09594346,
        -1.65903102, -1.7633602 , -2.28482762, -2.34014766, -0.32884458]))

In [6]:
# 今サンプリングしたデータを散布図で確認
plt.scatter(x1, y1, color="r", label="d1")


Out[6]:
<matplotlib.collections.PathCollection at 0x1157fe2e8>

In [7]:
# 同様に 平均 x=2, y=2 のガウス分布から100個データをサンプリング
mean2 = [2,2]
cov2 = [[1,0],[0,1]]
x2,y2 = np.random.multivariate_normal(mean2, cov2, 100).T

In [8]:
plt.scatter(x2,y2, c="b", marker="x", label="d2")


Out[8]:
<matplotlib.collections.PathCollection at 0x11586e5c0>

In [9]:
# 両方のデータを1つの散布図で表示する
plt.scatter(x1,y1, c="r", label="d1")
plt.scatter(x2,y2, c="b", marker="x", label="d2")
plt.grid(True) # 枠線をつけてみる
plt.legend() # 凡例をつけてみる
plt.show()


いかがでしょうか?恐らくPythonに慣れてない人には何をやっているのかサッパりだと思いますが,Python(および周辺ライブラリ)について学んでいくうちに,それぞれのプログラムの意味は分かると思います.このチュートリアルでは,対話的にプログラムを実行できるこの環境について慣れてもらえればと思います.