Jupyter notebook
Jupyter notebook是什么?
notebook是一种Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中
Notebook已迅速成为处理数据的必备工具
其已知用途包括数据清理和探索、可视化、机器学习和大数据分析
notebook 如何工作
Jupyter notebook 源自 Fernando Perez 发起的 IPython 项目。IPython是一种交互式shell,与普通的 Python shell 相似,但具有一些很好的功能(例如语法高亮显示和代码补全)。最初,notebook 的工作方式是,将来自 Web 应用(你在浏览器中看到的 notebook)的消息发送给 IPython 内核(在后台运行的 IPython 应用程序)。内核执行代码,然后将代码发送回 notebook
核心点是notebook的服务器。你通过浏览器连接到该服务器,而notebook呈现为Web应用。你在Web应用中编写的代码通过该服务器发送给内核。内核运行代码并将代码发送回该服务器,之后,任何输出都会返回到浏览器中。保存notebook时,它作为JSON文件(文件扩展名为 .ipynb)写入到该服务器中。
此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。例如,早期的两个非 Python 内核分别用于 R 语言和 Julia 语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称 Jupyter 由 Julia、Python 和 R 组合而成
另一个优点是,可以在任何地方运行服务器,并且可通过互联网访问服务器。通常,你会在存储所有数据和 notebook 文件的自有计算机上运行服务器。但是,你也可以在远程计算机或云实例(如 Amazon 的 EC2)上设置服务器
安装 Jupyter notebook
到目前为止,安装Jupyter的最简单方法是使用Anaconda,
该发行版自动附带了Jupyter notebook,能够在默认环境下使用 notebook。
也可以pip使用pip install jupyter notebook 来安装Jupyter notebook
1 | [root@sparsematrix ~]# conda install jupyter notebook |
启动notebook服务器
允许端口访问
1 | [root@sparsematrix jupyter-notebook]# firewall-cmd --zone=public --add-port=8888/tcp --permanent |
生成密码
1 | [matrix@sparsematrix ~]$ ipython |
修改默认配置文件
1 | [matrix@sparsematrix ~]$ jupyter notebook --generate-config |
1 | c.NotebookApp.ip='*' |
启动Jupyter
注意:最好不要在root下启动Jupyter
在浏览器地址栏输入:http://Remote_Server_IP:8888/tree?
1 | [matrix@sparsematrix ~]$ jupyter notebook |


点击“New”(新建),创建新的 notebook、文本文件、文件夹或终端。“Notebooks”下的列表显示了你已安装的内核

1 | 顶部的选项卡是 Files(文件)、Running(运行)和 Cluster(聚类) |

1 | 如果在 conda 环境中运行 notebook 服务器,则你还能访问以下所示的"Conda"选项卡 |
关闭Jupyter
通过在终端中按两次 Ctrl + C,可以关闭整个服务器。再次提醒,这会立即关闭所有运行中的 notebook,因此,请确保你保存了工作!
Jupyter快捷键使用
Jupyter Notebook 有两种键盘输入模式
即命令模式和编辑模式,这与 Vim 有些类似
在编辑模式下,可以往单元中键入代码或文本,此时单元格被绿色的框线包围,且命令模式下的快捷键不生效。
在命令模式下,可以用快捷键命令运行单元格,移动单元格,切换单元格编辑状态等等,此时的单元格被灰色的框线包围,且编辑模式下的快捷键不生效
从命令模式进入编辑模式需按Enter键,从编辑模式切换到命令模式需按Esc 键。
数学表达式
在 Markdown 单元格中,可以使用 LaTeX 符号创建数学表达式。notebook 使用 MathJax 将 LaTeX 符号呈现为数学符号。要启动数学模式,请在 LaTeX 符号两侧加上美元符号(例如 $y = mx + b$),以创建内联的数学表达式
对于数学符号块,请使用两个美元符号
1 | $$ |

1 | $y = mx + b$ |

1 | $$P(A\mid B) = \frac{P(B\mid A)P(A)}{P(B)}$$ |

1 | $x^2$ |

1 | $$ |

Magic 关键字
Magic 关键字是可以在单元格中运行的特殊命令,能让你控制 notebook 本身或执行系统调用(例如更改目录)。
例如,可以使用 %matplotlib 将 matplotlib 设置为以交互方式在 notebook 中工作。
Magic 命令的前面带有一个或两个百分号(% 或 %%),分别对应行 Magic 命令和单元格 Magic 命令
行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。
注意:这些 Magic 关键字是特定于普通 Python 内核的关键字
代码计时
有时候,你可能要花些精力优化代码,让代码运行得更快。在此优化过程中,必须对代码的运行速度进行计时
1 | from math import sqrt |
使用Magic命令timeit测算函数的运行时间
1 | %timeit fibo1(20) |
1 | %timeit fibo2(20) |

使用%%timeit测算整个单元格的运行时间
1 | import random |
1 | %%timeit |
1 | %%timeit |

在notebook中嵌入可视化内容
notebook允许你将图像与文本和代码一起嵌入
使用matplotlib或其他绘图包创建可视化内容时最为有用。
可以使用%matplotlib将matplotlib设置为以交互方式在notebook中工作
默认情况下,图形呈现在各自的窗口中
可以向命令传递参数,以选择特定的“后端”(呈现图像的软件)
要直接在notebook中呈现图形,应将内联后端与命令%matplotlib inline 一起使用
提示:在分辨率较高的屏幕(例如 Retina 显示屏)上,notebook中的默认图像可能会显得模糊
在%matplotlib inline之后使用%config InlineBackend.figure_format = ‘retina’来呈现分辨率较高的图像
1 | %matplotlib inline |
1 | x = np.linspace(0,1,300) |
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/05/15/Jupyter notebook/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
知识 & 情怀 | 二者兼得