Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。在本文中,我们将介绍 Jupyter notebook 的主要特性,以及为什么对于希望编写漂亮的交互式文档的人来说是一个强大工具。

在开始使用 notebook 之前,我们先需要安装该库。你可以在 Jupyter 官网上找到完整的步骤。

一、安装Jupyter

新版本Anaconda自带Jupyter

目前,最新版本的Anaconda是自带Jupyter NoteBook的,不需要再单独安装

image_1b4e5l3s6r5i18ok1rnd195i1u549.png-31.6kB

老版本Anacodna需自己安装Jupyter

[Jupyter Notebook安装的官方网站](http://jupyter.readthedocs.io/en/latest/install.html)

  • 安装Jupyter Notebook的先决条件:已经安装了python(python 2.7 或者是python3.3)
  • 具体的安装方法:
    • 官方建议利用Anaconda安装Jupyter
    • 安装完成Anaconda后,如果该Anaconda并不自带Jupyter Noterbook,那么,打开cmd,输入:conda install jupyter
  • 这样安装完的jupyter不具有New a terminal的功能
    经过各种查询才知道,原来是因为windows不具有terminal需要的TTY,所以,windows下的jupyter是不支持Terminal模式的,而且短期内也没有增加这种支持的计划

二、更改Jupyter notebook的工作空间

如何找到该配置文件

  • 在cmd中输入jupyter notebook --generate-config

  • 如果该配置文件已经存在,那么,会出现如下信息,从中可以见到配置文件存在的位置,注意,此时,输入N,不要overwrite

image_1b4e641ot340t3g1asfdv81972m.png-16.9kB


在其配置文件ipython_notebook_config.py中,有如下一句

1
2
# The directory to use for notebooks and kernels.
# c.NotebookApp.notebook_dir = u''

简单使用

简单的操作符

1
2**2
4

常用快捷键

  • 执行当前cell,并自动跳到下一个cell:Shift Enter
  • 执行当前cell,执行后不自动调转到下一个cell:Ctrl-Enter
  • 是当前的cell进入编辑模式:Enter
  • 退出当前cell的编辑模式:Esc
  • 删除当前的cell:双D
  • 为当前的cell加入line number:单L
  • 将当前的cell转化为具有一级标题的maskdown:单1
  • 将当前的cell转化为具有二级标题的maskdown:单2
  • 将当前的cell转化为具有三级标题的maskdown:单3
  • 为一行或者多行添加/取消注释:Crtl /
  • 撤销对某个cell的删除:z
  • 浏览器的各个Tab之间切换:Crtl PgUpCrtl PgDn
  • 快速跳转到首个cell:Crtl Home
  • 快速跳转到最后一个cell:Crtl End

多行操作同样支持

1
2
for i in range(5):
print(i)
0
1
2
3
4

你还可以使用 LaTex 来生成数学公式

$$\int_0^{+\infty} x^2 dx$$

$$\int_0^{+\infty} x^2 dx$$

导出功能

notebook 还有一个强大的特性,就是其导出功能。可以将 notebook 导出为多种格式:

  • HTML
  • markdown
  • pdf
  • ReST
  • raw python

Matplotlib 集成

如果你用 Python 绘制过图形,那你肯定知道 matplotlib。Matplotlib 是一个用于创建漂亮图形的 Python 库,结合 Jupyter notebook 使用时体验更佳。

要想在 Jupyter notebook 中使用 matplotlib,需要告诉 Jupyter 获取 matplotlib 生成的所有图形,并将其嵌入 notebook 中。为此,需要计算:

1
%matplotlib inline

为了执行成功你可能需要首先安装matplotlibpip installl matplotlib

1
%matplotlib inline
1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(20)
y = x**2

plt.plot(x, y)
[<matplotlib.lines.Line2D at 0x7f6d288b8f98>]

png