インストール
-
- Anacondaを入れる
- 適当なディレクトリでコマンドプロンプトとかで「jupyter notebook」
インストールというインストールはいらなかった。
Anacondaマジ便利。
ついでに管理者権限で以下のコマンドを実行しておく。
condaから拡張機能のライブラリをインストール
conda install -y -c conda-forge jupyter_nbextensions_configurator jupyter_contrib_nbextensions
Javascript用のカーネル
npm install -g ijavascript
rubyやc++11向けのもある。
IDE的なJupyter Labというのもあるが、
まだ開発中で安定しないのでしばらくはnotebookでいいかな。
pip install jupyterlab
jupyter serverextension enable --py jupyterlab --sys-prefix
jupyter lab
起動と実行テスト
jupyter notebookするとブラウザで開始画面が開かれる。
「New」をクリックして「Javascript (Node.js)」と「Python3」があればインストールは成功している。
Python3を選択して新規ドキュメントを作成する。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline # 画像をインラインで表示
import seaborn as sns
sns.set(font='Kozuka Gothic Pro', style="whitegrid") # フォントは環境に合わせて…
sns.distplot(np.random.rand(10000) * 256, kde=False, rug=False, bins=32)
In [1]: と表示される入力欄におもむろにPythonコードを貼り付けて
Run Cell(Alt + Enterのショートカット)するだけでグラフが出力される。
Anacondaは最初から標準的なライブラリがインストールされているので
何もせずとも使えてしまう。
パッケージインストールでエラーが出て発狂することもない。
至れり尽くせりではないか。
数式
コンボボックスを「Code」から「Markdown」にするとテキストの入力になる。
ここでは普通にMarkdownの記法が使える。
これが…
本文中の数式は$E = mc^2$です。
$$\sum_{k=1}^{\infty}\frac{1}{k^2}=\frac{\pi^2}{6}$$
こうなる。
地味にメモとるのに便利。
コピペができるターミナルとしての利用
Jupyterでは最終行の結果が出力として表示される。
x = np.random.rand(100) * 256
x
array([ 57.16269453, 173.52147856, 175.73999752, 197.03351494,
191.90229057, 56.22117899, 222.23990173, 111.78970374,
65.32640908, 223.66937955, 251.12137359, 154.80405154,
20.06424932, 177.75248286, 218.21348661, 160.13820081,
40.86074505, 117.83298074, 128.01976948, 151.76557561,
53.67760328, 138.31802274, 27.9917731 , 5.056024 ,
15.11568687, 10.43714852, 161.24466713, 224.34820859,
217.25158559, 206.86659415, 117.60971695, 9.22591763,
89.8796563 , 67.89282587, 248.77000789, 125.85296265,
112.90104209, 12.9988741 , 249.47178391, 217.76013419,
213.65555396, 179.0598829 , 176.59850712, 10.39062046,
123.2150208 , 216.36122343, 207.84097208, 150.28184883,
182.37658399, 30.30863801, 11.24046353, 215.92988276,
163.20994467, 199.82598128, 93.92821475, 66.79511017,
66.23161549, 29.821778 , 232.67160614, 238.12155737,
33.26933263, 230.47469069, 162.70467466, 95.05107874,
120.96468895, 250.75551959, 60.11908842, 163.21828435,
121.4580693 , 13.92458022, 92.39763579, 47.09220457,
163.74857965, 216.48002571, 237.89115426, 2.72784433,
209.78716492, 149.94296103, 0.53356501, 14.5028572 ,
189.64603384, 133.35334654, 203.46146596, 202.9736626 ,
224.63979533, 4.41760385, 142.43388688, 67.12034513,
58.07451611, 94.26549529, 226.21585411, 103.69880617,
150.68305271, 167.56179674, 102.5735206 , 44.83089461,
62.31203524, 181.73172609, 165.70634355, 147.30576083])
図の赤線で囲まれた領域をメモ帳にコピーするという作業をやってみる。
改めて説明するまでもありませんが、
ここで行うことは0と6の間をクリックし、.と5の間までドラッグして離すという
ブラウザ含め一般的なWindowsアプリケーションで行われるドラッグによる選択という操作です。
ちゃんと。6から.までが正しく選択されています。
正しく0と6の間をクリックしたのになぜか前の20も一緒に選択されるということはありません。
素晴らしい。
しかも選択しただけではクリップボードに内容がコピーされることはありません。
うん。行儀がいいアプリケーションなんだね。
Ctrl + C → Ctrl + V でコピー完了。
Wordのファイルからメモ帳にコピーしたかのごとくコピー結果も完璧だ!
コマンドプロンプトとかPowershell、Linuxのターミナル全般もそうだけど
標準入出力でまともな「選択」ができるアプリを見たことがない。
どのアプリも必ずといっていいほど矩形選択なんだよね。
俺は矩形なんて選択したくないんだよ。
それにコピー&ペーストの機能がWindowsのメモ帳以下。
だからChromeなんかでググってきたコマンドを適時実行してその出力の一部を
Wordとかに貼り付けてレポートにするといった処理が不可能だった。
(一旦ファイル出力したり、逐一awkやsedのコード書くのはねーよ)
Jupyterは矩形じゃない選択ができるというだけで価値がある。
他言語との連携
PythonからC++で作ったdllをインポートして…といった使い方はもちろん問題ない。
しかしブラウザで動かしてるんだからPythonとJavascriptで変数をゴニョゴニョしてというのはやめた方がいい。
もちろんできなくはないが、あれは触れてはいけないものだと察してそっ閉じした。
Notebookは1言語で閉じるのがシンプルで良い。