Jupyter 简明教程
IPython - Introduction
Project Jupyter 是用于交互式计算的一套软件产品。IPython 最初是由 Fernando Perez 于 2001 年开发的,作为 Python 解释器增强版。2011 年推出了基于 Web 的 IPython 终端界面,称为 IPython notebook。2014 年,Project Jupyter 开始作为 IPython 的一个分支项目。
Jupyter 项目下的软件包包括 −
-
Jupyter notebook − Python、Julia、R 及其他众多语言的编程环境的 Web 界面
-
QtConsole − 与 IPython 类似的基于 Qt 的 Jupyter 内核终端
-
nbviewer − 共享 Jupyter 笔记本的功能
-
JupyterLab − 现代 Web 界面集成所有产品。
Python 的标准发行版随 REPL (Read-Evaluate-Print Loop) 环境一起提供,该环境采用 IPython shell 的形式带 >>> 提示符。IPython(即 Interactive Python)是 Python 的增强型交互式环境,它比标准 Python shell 具有更多功能。
Features of IPython
IPython 提供的特性比标准 Python 多。它们如下所述 −
-
提供功能强大的交互式 Python shell。
-
可用作 Jupyter notebook 及其他 Project Jupyter 的前端工具的主内核。
-
具有对象内省能力。内省是指在运行时检查对象属性的能力。
-
Syntax highlighting.
-
存储交互历史。
-
关键词、变量和函数名称的 Tab 补全。
-
魔术命令系统,可用于控制 Python 环境及执行 OS 任务。
-
能够嵌入到其他 Python 程序中。
-
提供对 Python 调试器的访问。
History and Development
IPython 最初是由 Fernando Perez 于 2001 年开发的。其当前版本是 IPython7.0.1,它需要 Python 3.4 版或更高版。IPython 6.0 是第一个支持 Python 3 的版本。使用 Python 2.7 的用户应使用 IPython 的 2.0 到 5.7 版
计算笔记本的概念始于 80 年代,当时 MATLAB 和 Mathematica 得以发行。面向交互式外壳的这些 GUI 前端具有文本格式化、添加图形、表格以及添加数学符号等功能。Sage Notebook 也是一款基于 Web 的笔记本。
IPython 的创建者于 2005 年开始为 IPython 外壳的笔记本界面开展工作。IPython Notebook 很快增加了对其他语言(例如 R 和 Julia)的支持。直到 2014 年,Perez 才将 Jupyter 项目作为一个衍生项目从 IPython 中剥离出去,因为 IPython 项目已经变得庞大,其中增加了 Notebook Server 和 Qt 控制台等产品。
自 IPython 4.0 起,所有附加组件都被移至 Project Jupyter 并为 IPython Notebook 增加了对其他语言的支持。IPython 继续专注于改进其增强的解释器功能。它还为 Jupyter Notebook 前端提供主要内核。
IPython - Installation
IPython 默认包含在 Python 的 Anaconda 发行版中。它可以从 Anaconda 的下载页面 www.anaconda.com/download/ 下载。此链接上提供了适用于所有主要操作系统(Windows、MacOS 和 Linux)和架构(32 位和 64 位)的二进制文件。
要单独在标准 Python 安装中安装 IPython,您可以使用 pip 命令,如下所示 −
pip3 install ipython
IPython 在内部使用以下软件包 −
Sr.No. |
IPython dependencies & Functionality |
1 |
colorama 用于从 Python 打印彩色终端文本的跨平台 API |
2 |
jedi 用于 Python 的自动完成工具 |
3 |
pickleshare 带有并发支持的小型“搁置”类数据存储 |
4 |
prompt_toolkit 在 Python 中构建功能强大的交互式命令行的库 |
5 |
pygments 使用 Python 编写的语法突出显示包 |
6 |
simplegeneric Simple generic functions |
7 |
traitlets 适用于 Python 应用程序的配置系统。 |
通常,所有依赖项都将自动安装。否则,您可以使用 pip 单独安装它们。
IPython - Getting Started
本章将解释如何开始使用 IPython。
Starting IPython from Command Prompt.
在深入了解 IPython 之前,请注意代替常规 >>> ,您将看到两个主要的 Python 提示,如下所述 −
-
In[1] 出现于任何输入表达式之前。
-
Out[1] 出现于输出出现之前。
此外,方括号中的数字自动递增。观察以下屏幕截图以更好地理解 −
现在,如果您安装了 Python 的 Anaconda 分发,请从开始菜单中打开 Anaconda 提示符。
Start IPython from conda prompt
与常规 Python 控制台相比,我们会注意到一个区别。IPython 外壳通过对不同的元素(如表达式、函数、变量等)使用不同的颜色方案显示语法高亮。
另一个有用的增强功能是制表符自动补全。我们知道每个对象具有一个或多个方法,如其类中定义的那样。当您在对象前面的点后按 Tab 键时,IPython 会弹出适当的方法列表。
在下面的示例中,定义了一个字符串。响应该操作,显示了字符串类的所有方法。
通过在它的前面输入“?”,IPython 提供任何对象的详细信息。其中包括文档字符串、函数定义和类的构造函数详细信息。例如,要浏览上面定义的字符串对象 var,请在输入提示符中输入 var? 。结果将显示有关其所有详细信息。观察以下屏幕截图以更好地理解 −
IPython - Running and Editing Python Script
在本章中,让我们了解如何运行和编辑 Python 脚本。
Run Command
您可以在输入提示中使用 run 命令运行 Python 脚本。run 命令实际上是行 magic 命令,实际上应该写成 %run 。但是, %automagic 模式始终默认打开,因此您可以省略它。
In [1]: run hello.py
Hello IPython
Edit Command
IPython 还提供编辑 magic 命令。它调用操作系统的默认编辑器。您可以通过 Windows 记事本编辑器将其打开并编辑该脚本。在保存其输入后关闭它之后,将显示已修改脚本的输出。
In [2]: edit hello.py
Editing... done. Executing edited code...
Hello IPython
welcome to interactive computing
请注意,hello.py 最初仅包含一个语句,在编辑后又添加了一个语句。如果未向编辑命令提供文件名,则会创建一个临时文件。观察以下显示相同内容的代码。
In [7]: edit
IPython will make a temporary file named:
C:\Users\acer\AppData\Local\Temp\ipython_edit_4aa4vx8f\ipython_edit_t7i6s_er.py
Editing... done. Executing edited code...
magic of IPython
Out[7]: 'print ("magic of IPython")'
IPython - History Command
IPython 保存当前会话中的命令及其结果。我们可以按向上键和向下键滚动浏览之前的命令。
此外,最后三个输出对象存储在特殊变量 , _ and _ 中。 history 魔术命令显示当前会话中的上一条命令,如下图中的屏幕截图所示 −
IPython - System Commands
如果输入单元格中的语句以惊叹号 (!) 开头,则它会被当作底层操作系统的系统命令。例如, !ls (适用于 Linux)和 !dir (适用于 Windows)会显示当前目录的内容
系统命令的输出还可以像下面所示分配给 Python 变量 −
该变量存储无颜色的输出,并在换行符处拆分。
还可以将 Python 变量或表达式和系统命令调用结合起来。大括号 {} 中的变量可以内嵌在命令文本中。观察以下示例 −
以下是另一个示例,它说明在 Python 变量前加上 $ 也能实现相同的结果。
IPython - Command Line Options
在本章中,让我们了解如何使用 IPython 中的各种命令行选项。
Invoking IPython Program
你可以使用以下选项调用 IPython 程序:
C:\python36> ipython [subcommand] [options] [-c cmd | -m mod | file] [--] [arg]
file 选项是一个 Python 脚本,扩展名为 .py。如果没有给出其他选项,将执行该脚本并重新显示命令提示符。
C:\python36>ipython hello.py
Hello IPython
welcome to interactive computing
Subcommands and Parameters
IPython 命令接受以下子命令选项:
-
Profile - 创建和管理 IPython 配置文件。
-
Kernel - 启动内核,不附加前端。
-
Locate - 打印 IPython 目录的路径。
-
History - 管理 IPython 历史记录数据库。
IPython 配置文件子命令接受以下参数:
-
ipython profile create myprofile - 创建新配置文件。
-
ipython profile list - 列出所有可用的配置文件。
-
ipython locate profile myprofile − 找到所需的配置文件。
要安装新的 IPython 内核,请使用以下命令 −
Ipython kernel –install –name
要打印出 IPython 目录的路径,请使用以下命令 −
C:\python36>ipython locate myprofile
C:\Users\acer\.ipython
此外,我们还知道 −
-
history 子命令管理 IPython 历史数据库。
-
trim 选项将 IPython 历史记录数据库减少到最后 1000 个条目。
-
clear 选项删除所有条目。
以下列出了 IPython 的其他一些重要的命令行选项 −
Sr.No. |
IPython Command & Description |
1 |
--automagic 打开自动调用魔术命令。 |
2 |
--pdb 启用在每次异常后自动调用 pdb 调试器。 |
3 |
--pylab 预先加载 matplotlib 和 numpy 以便与默认 matplotlib 后端进行交互式使用。 |
4 |
--matplotlib 将 matplotlib 配置为与默认 matplotlib 后端进行交互式使用。 |
5 |
--gui=options 启用与以下任意一个 GUI 事件循环集成(“glut”、“gtk”、“gtk2”、“gtk3”、“osx”、“pyglet”、“qt”、“qt4”、“qt5”、“tk”、“wx”、“gtk2”、“qt4”)。 |
某些 IPython 命令行选项的示例用法显示在以下表格中 −
Sr.No. |
IPython Command & Description |
1 |
ipython --matplotlib enable matplotlib integration |
2 |
ipython --matplotlib=qt 启用带 qt4 后端的 matplotlib 集成 |
3 |
ipython --profile=myprofile 使用配置文件 foo 启动 |
4 |
ipython profile create myprofile 使用默认配置文件创建配置文件 foo |
5 |
ipython help profile 显示 profile 子命令的帮助 |
6 |
ipython locate 打印 IPython 目录的路径 |
7 |
ipython locate profile myprofile 打印配置文件 |
IPython - Dynamic Object Introspection
IPython 有不同的方法可以动态获取有关 Python 对象的信息。在本章中,让我们学习如何在 IPython 中进行动态对象自省。
使用 ? 和 ?? 提供有关对象具体而更详细的信息。在下文讨论的第一个示例中,创建了一个简单的整数对象 a。可以通过在输入单元格中输入 a? 来获取其信息。
在第二个示例中,让我们定义一个函数,并使用 ? 和 ?? 对此函数对象进行自省。
请注意,魔术函数 %psearch 等同于使用 ? 或 ?? 来获取对象信息。
IPython - IO Caching
IPython 控制台上的输入和输出单元按序编号。在本章中,我们将详细了解 Python 中的 IO 缓存。
在 IPython 中,使用向上箭头键检索输入。此外,所有先前的输入均已保存且可以检索。变量 _i 、 _i 和 __i 始终存储前三个输入条目。此外, In 和 _in 变量提供所有输入的列表。显然, _in[n] 从第 n 个输入单元检索输入。以下 IPython 会话将帮助您理解这一现象 −
In [1]: print ("Hello")
Hello
In [2]: 2+2
Out[2]: 4
In [3]: x = 10
In [4]: y = 2
In [5]: pow(x,y)
Out[5]: 100
In [6]: _iii, _ii, _i
Out[6]: ('x = 10', 'y = 2', 'pow(x,y)')
In [7]: In
Out[7]:
['',
'print ("Hello")',
'2+2',
'x = 10',
'y = 2',
'pow(x,y)',
'_iii, _ii, _i',
'In'
]
In [8]: In[5] 9. IPython — IO
Out[8]: 'pow(x,y)'
In [9]: _ih
Out[9]:
['',
'print ("Hello")',
'2+2',
'x = 10',
'y = 2',
'pow(x,y)',
'_iii, _ii, _i',
'In',
'In[5]',
'_ih'
]
In [11]: _ih[4]
Out[11]: 'y = 2'
In [12]: In[1:4]
Out[12]: ['print ("Hello")', '2+2', 'x=10']
类似地,单下划线、双下划线和三下划线用作变量以存储前三个输出。 Out 和 _oh 还形成单元格编号和执行操作的单元格输出的词典对象(不包括赋值语句)。要检索特定输出单元格的内容,请使用 Out[n] 或 _oh[n] 。您还可以使用切片获取范围内的输出单元格。
In [1]: print ("Hello")
Hello
In [2]: 2+2
Out[2]: 4
In [3]: x = 10
In [4]: y = 3
In [5]: pow(x,y)
Out[5]: 1000
In [6]: ___, __, _
Out[6]: ('', 4, 1000)
In [7]: Out
Out[7]: {2: 4, 5: 1000, 6: ('', 4, 1000)}
In [8]: _oh
Out[8]: {2: 4, 5: 1000, 6: ('', 4, 1000)}
In [9]: _5
Out[9]: 1000
In [10]: Out[6]
Out[10]: ('', 4, 1000)
Setting IPython as Default Python Environment
不同的环境变量会影响 Python 的行为。PYTHONSTARTUP 环境变量被分配给一个 Python 脚本。实际上,该脚本将在 Python 提示符出现之前执行。如果在每次新的 Python 会话启动时都要默认加载某些模块,此方法就很有用。
以下脚本 (start.py) 导入 IPython 模块,并执行 start_ipython() 函数,以便在调用 Python 可执行文件时用 IPython shell 替换默认 Python shell with prompt (>>>) 。
import os, IPython
os.environ['PYTHONSTARTUP'] = ''
IPython.start_ipython()
raise SystemExit
假设此文件存储在 Python 的安装目录 (c:\python36) 中,请设置 PYTHONSTARTUP 环境变量并从命令行启动 Python。然后,IPython shell 就会像下面所示出现 −
请注意,可以在 Windows 中使用系统属性对话框,在 Linux 上使用 export 命令永久设置环境变量。
IPython - Importing Python Shell Code
IPython 可以从带有默认 >>> 提示符的标准 Python 控制台和另一个 IPython 会话中读取内容。以下屏幕截图显示在标准 Python shell 中编写的 for 循环 −
复制代码(连同 Python 提示符),并将其粘贴到 IPython 输入单元格中。IPython 会智能地滤出输入提示符 (>>> 和 …) 或 IPython 提示符 (In [N]: 和 …:)
同样,来自一个 IPython 会话的代码也可以粘贴到另一个会话中。下面给出的第一个屏幕截图显示在一个 IPython 窗口中定义 SayHello() 函数 −
现在,让我们选择代码并粘贴到另一个 IPython shell 中并调用 SayHello() 函数。
Embedding IPython
IPython 模块的 embed() 函数使得在 Python 代码的名称空间中嵌入 IPython 成为可能。因此,你可以在默认的 Python 环境中利用 IPython 的特性,例如对象自省和 tab 补全。
在嵌入之前存在于全局名称空间的 Python 对象将可供 IPython 使用。
如果在 IPython 中创建了新对象或修改了以前的对象,则在退出 IPython 后,它们将自动可供默认环境使用。嵌入的 IPython shell 不会改变先前代码或对象的状态。
但是,如果 IPython 嵌入在函数内的局部名称空间中,则其中的对象在关闭后将不可用。在这里,我们定义了一个 add() 函数。在 add() 内部,我们调用 IPython 声明一个变量。如果我们尝试在 IPython 关闭后访问变量,将引发 NameError 异常。
IPython - Magic Commands
与标准 Python 外壳相比,魔术命令或魔术函数是 IPython 提供的重要增强功能之一。这些魔术命令旨在使用 Python 来解决数据分析中的常见问题。事实上,它们控制着 IPython 本身的行为。
当 Python 语法不是最自然时,魔术命令可作为方便的功能。它们可用于在其工作流程中嵌入无效 Python 语法。
Types of Magic Commands
魔术命令有两种类型 −
-
Line magics
-
Cell magics
Cell Magics
它们有一个 %% 字符前缀。与行魔术函数不同,它们可以在其调用下方的多行中操作。事实上,它们可以对其接收的输入进行任意修改,而输入甚至不必是有效的 Python 代码。它们将整个块作为单个字符串接收。
要了解有关魔术函数、内置魔术及其文档字符串的更多信息,请使用魔术命令。特定魔术函数的信息可通过 % magicfunction? 命令获取。让我们现在描述一些内置行和单元格魔术命令。
Built-in line magics
%autocall [mode]
此魔术函数可以自动调用函数,而无需使用括号。它需要三个可能的模式参数: 0 (off), 1 (smart) is default 或 2 (always on) 。
%automagic
如果设置为 1,则魔术函数在无需输入初始 % 的情况下可变为可调用。没有参数时,它会切换开/关。要停用,请设置为 0。
以下示例显示了在将 %automagic 设置为 1 时,调用了不带前导 % 的魔术函数 %pwd (显示当前工作目录)
%env
该魔术命令将列出所有环境变量。它还会读取特定变量的值或设置环境变量的值。
Usage
%cd 命令可以用以下方式使用 −
-
%env − 列出所有环境变量
-
%env var − 获取变量的值
-
%env var val − 设置变量的值
%gui [GUINAME]
当不带参数使用该命令时,它将启用或禁用 IPython GUI 事件循环集成。通过 GUINAME 参数,该魔术可以将默认 GUI 工具包替换为指定的一个。
Sr.No. |
Command & Description |
1 |
%gui wx 启用 wxPython 事件循环集成 |
2 |
*%gui qt4 |
qt*启用 PyQt4 事件循环集成 |
3 |
%gui qt5 启用 PyQt5 事件循环集成 |
4 |
%gui gtk 启用 PyGTK 事件循环集成 |
5 |
%gui gtk3 启用 Gtk3 事件循环集成 |
6 |
%gui tk 启用 Tk 事件循环集成 |
7 |
%gui osx 启用 Cocoa 事件循环集成 |
8 |
(requires %matplotlib 1.1) |
9 |
%matplotlib
此函数在 IPython 会话中激活 Matplotlib 交互式支持。但是,它不会导入 Matplotlib 库。Matplotlib 默认 GUI 工具包是 TkAgg。但您可以显式请求不同的 GUI 后端。您可以看到可用后端的列表,如下所示 −
In [4]: %matplotlib --list
Available matplotlib backends:
['osx', 'qt4', 'qt5', 'gtk3', 'notebook', 'wx', 'qt', 'nbagg','gtk', 'tk', 'inline']
此处所示的 IPython 会话使用 qt 工具包绘制正弦波 −
在使用 Jupyter notebook 时,%matplotlib inline 指令仅在浏览器中显示绘图输出。
%notebook
此函数将当前 IPython 历史记录转换为具有 ipynb 扩展名的 IPython notebook 文件。上一个示例中的输入单元格保存为 sine.ipynb
%notebook sine.ipynb
%recall
在不带任何参数的情况下执行时,此函数执行上一个命令。
请注意,在 %recall n 中,前面的数字是输入单元格编号。因此,单元格 n 中的命令被调用。您可以通过使用诸如 %recall 1-4 之类的命令来调用部分单元格中的命令。当前输入单元格由调用的单元格填充,并且光标闪烁,直至按下回车键。
Project Jupyter - Overview
Jupyter 项目始于 2014 年 IPython 项目的分支。IPython 与语言无关的特性被移到了 Jupyter 这个名字下。这个名字指的是 Jupyter 支持的核心编程语言,即 Julia、Python和R。Jupyter 项目下的产品旨在支持交互式数据科学和科学计算。
Jupyter 项目由以下各种产品组成:
-
IPykernel - 这是一个提供 Jupyter IPython 内核的包。
-
Jupyter client - 这个包包含 Jupyter 协议的参考实现。它也是用于启动、管理和与 Jupyter 内核通信的一个客户端库。
-
Jupyter notebook - 这个以前称为 IPython 笔记本。这是 IPython 内核和许多其他编程语言内核的一个基于网络的界面。
-
Jupyter kernels - 内核是 Jupyter 产品的编程语言的执行环境。
下面给出 Jupyter 内核列表:
Kernel |
Language |
URL |
IJulia |
Julia |
|
IHaskell |
Haskell |
|
IRuby |
Ruby |
|
IJavaScript |
JavaScript |
|
IPHP |
PHP |
|
IRKernel |
R |
-
Qtconsole - 一个丰富基于 Qt 的控制台,用于处理 Jupyter 内核
-
nbconvert - 以其他格式转换 Jupyter 笔记本文件
-
JupyterLab - 笔记本、编辑器、控制台等的基于网络的集成界面
-
nbviewer - 笔记本文件的 HTML 浏览器
Jupyter Notebook - Introduction
IPython Notebook 由 Fernando Perez 开发,作为 IPython 内核的基于 Web 的前端。为了构建面向多种语言的集成交互式计算环境,Notebook 项目被移至 Project Jupyter 下,除了 Python 之外,还针对 Juila 和 R 编程环境提供前端。
Notebook 文档包含带有 HTML 格式化文本、图形、数学方程式等内容的富文本元素。该 Notebook 还是一份可执行文件,其中包含 Python 或其他支持语言的代码块。
Jupyter Notebook 是一种客户端-服务器应用程序。该应用程序在本地计算机上启动服务器,并在 Web 浏览器中打开 Notebook 界面,用户可以在其中对其进行编辑并从中运行。该 Notebook 被保存为 ipynb 文件,并可以导出为 html、pdf 和 LaTex 文件。
Working with Jupyter Online
如果你对 Jupyter 不熟悉,可以在本地计算机上安装之前尝试 Jupyter notebook 的功能。为此,访问浏览器中的 ` https://jupyter.org `,然后选择 ` ‘Try Jupyter with Python’ ` 选项。
这将在浏览器中打开 ` https://mybinder.org ` 的主页。从 File 菜单中选择新建笔记本选项,在浏览器中打开一个空白的 Jupyter。与 IPython 终端类似的输入单元格将显示。你可以在其中执行任何 Python 表达式。
Installation and Getting Started
你还可以使用 pip 包管理器轻松安装 Jupyter notebook 应用程序。
pip3 install jupyter
要启动应用程序,请在命令提示符窗口中使用以下命令。
c:\python36>jupyter notebook
服务器应用程序开始在默认端口号 8888 上运行,浏览器窗口打开以显示笔记本仪表板。
请注意,仪表板在新按钮旁的浏览器右边界附近显示了一个下拉菜单,旁边带有箭头。它包含当前可用的 notebook 内核。现在,选择 Python 3,然后在一个新选项卡中打开一个新的 notebook。与 IPython 控制台中类似的输入单元格显示。
你可以在其中执行任何 Python 表达式。结果将显示在 Out 单元格中。
Jupyter Notebook - Dashboard
Jupyter Notebook - User Interface
在 Jupyter 的用户界面中,在标题栏的徽标旁边显示文件名。
你可以在标题栏下方找到菜单栏。每个菜单都包含许多选项,将在以后讨论。
构成工具栏的图标行可帮助用户执行通常需要执行的操作
笔记具有两种模式 - Command mode 和 Edit mode 。当某个单元格被单击时,笔记本会进入编辑模式。请注意这个铅笔符号就在内核名称旁边。
内核指示符符号就显示在内核名称的右侧。请注意:空心圆表示内核空闲,实心圆表示内核繁忙。
Jupyter Notebook - Types of Cells
Jupyter Notebook 中的单元格有三种类型 − Code, Markdown 和 Raw 。
Code Cells
此单元格中的内容将作为当前内核的编程语言中的语句处理。默认内核为 Python。所以,我们可以在代码单元格中写 Python 语句。当此单元格运行时,它的结果将显示在一个输出单元格中。输出可能是文本、图片、matplotlib 图表或 HTML 表格。代码单元格具有富文本功能。
Jupyter Notebook - Editing
虽然菜单栏和工具栏允许你在笔记本上执行各种操作,但最好能使用键盘快捷键快速执行它们。
Jupyter 笔记本有两个不同的键盘输入模式 −
-
Command Mode − 将键盘绑定到笔记本级别操作。由带有蓝色左边缘的灰色单元格边框表示。
-
Edit Mode − 当你正在单元格中输入时。由一个绿色的单元格边框表示。
命令模式(按 Esc 启用)
F |
find and replace |
1 |
将单元格更改为标题 1 |
Ctrl-Shift-F |
open the command palette |
2 |
将单元格更改为标题 2 |
Ctrl-Shift-P |
open the command palette |
3 |
将单元格更改为标题 3 |
Enter |
enter edit mode |
4 |
将单元格更改为标题 4 |
P |
open the command palette |
5 |
将单元格更改为标题 5 |
Shift-Enter |
run cell, select below |
6 |
将单元格更改为标题 6 |
Ctrl-Enter |
run selected cells |
A |
insert cell above |
Alt-Enter |
运行单元格并插入到下面 |
B |
insert cell below |
Y |
change cell to code |
X |
cut selected cells |
M |
change cell to markdown |
C |
copy selected cells |
R |
change cell to raw |
V |
paste cells below |
K |
select cell above |
Z |
undo cell deletion |
Up |
select cell above |
D,D |
delete selected cells |
Down |
select cell below |
Shift-M |
合并选定的单元格,或仅选择一个单元格时,将当前单元格与下面的单元格合并 |
J |
select cell below |
Shift-V |
paste cells above |
Shift-K |
extend selected cells above |
L |
toggle line numbers |
Shift-Up |
extend selected cells above |
O |
切换所选单元格的输出 |
Shift-Down |
extend selected cells below |
Shift-O |
切换所选单元格的输出滚动 |
Shift-J |
extend selected cells below |
I,I |
interrupt the kernel |
Ctrl-S |
Save and Checkpoint |
0,0 |
重新启动内核(带对话框) |
S |
Save and Checkpoint |
Esc |
close the pager |
Shift-L |
切换所有单元格中的行号,并保留设置 |
Q |
close the pager |
Shift-Space |
scroll notebook up |
Space |
scroll notebook down |
编辑模式(按 Enter 启用)
Tab |
code completion or indent |
Ctrl-Home |
go to cell start |
Shift-Tab |
tooltip |
Ctrl-Up |
go to cell start |
Ctrl-] |
indent |
Ctrl-End |
go to cell end |
Ctrl-[ |
dedent |
Ctrl-Down |
go to cell end |
Ctrl-A |
select all |
Ctrl-Left |
go one word left |
Ctrl-Z |
undo |
Ctrl-Right |
go one word right |
Ctrl-/ |
comment |
Ctrl-M |
enter command mode |
Ctrl-D |
delete whole line |
Ctrl-Shift-F |
open the command palette |
Ctrl-U |
undo selection |
Ctrl-Shift-P |
open the command palette |
Insert |
toggle overwrite flag |
Esc |
enter command mode |
Ctrl-Backspace |
delete word before |
Ctrl-Y |
redo |
Ctrl-Delete |
delete word after |
Alt-U |
redo selection |
Shift-Enter |
run cell, select below |
Ctrl-Shift-Minus |
split cell at cursor |
Ctrl-Enter |
run selected cells |
Down |
move cursor down |
Alt-Enter |
运行单元格并插入到下面 |
Up |
move cursor up |
Ctrl-S |
Save and Checkpoint |
** |
Jupyter Notebook - Markdown Cells
Markdown 单元格显示可以使用 markdown 语言设置格式的文本。为了输入不应被笔记本服务器视为代码的文本,必须首先从单元格菜单中或在命令模式下使用键盘快捷键 M 将其转换为 markdown 单元格。单元格前的 In[] 提示会消失。
Header cell
markdown 单元格可以显示 6 种大小的标题文本,类似于 HTML 标题。通过 # 符号在 markdown 单元格中开始文本。使用与您想要标题的级别相对应的尽可能多的 # 符号。这意味着单个 # 将呈现最大的标题行,六个 # 符号呈现最小字体大小的标题。当您从单元格菜单或工具栏的运行按钮运行单元格时,将进行呈现。
以下屏幕截图显示了带有三个不同级别的标题的编辑模式下的 markdown 单元格。
当单元格运行时,输出如下 −
请注意,Jupyter 笔记本标记语言不支持 WYSWYG 功能。只有在运行标记单元格后才会呈现格式化效果。
Ordered Lists
若要按 HTML 的 <ol> 标签的原理呈现带序号的列表,列表中的第一项应编为 1。后续各项可以编为任意数字。运行标记单元格后,这些数字将按顺序呈现。若要显示缩进列表,请按 Tab 键,并以每个子列表中的 1 开头。
如果您为标记语言输入以下数据:
将显示以下列表:
Jupyter Notebook - Plotting
Jupyter 笔记本的 IPython 内核可以显示输入单元格中的代码绘图。它可以与 matplotlib 库无缝协作。 %matplotlib 魔术函数的 inline 选项可以在即使未调用绘图对象 show() 函数的情况下渲染绘图单元格。 show() 函数导致图形在不带数字的 [] 中单元格的下方显示。
现在,在末尾加上 plt.show() 再运行一次单元格来查看差别。
注意 %matplotlib notebook 魔术渲染交互式绘图。
就在图形的下方,你可以找到一个切换视图、平移、缩放和下载选项的工具栏。
重要的是,如果你修改绘图下方的源数据,显示会动态变化,而无需绘制另一副绘图。
在上面的示例中,修改单元格中 x 和 y 的数据集,再次绘制图形,上面的图形将得到动态刷新。
Jupyter - Converting Notebooks
Jupyter 笔记本文件具有 .ipynb 扩展名。笔记本 app 会在网络浏览器中呈现笔记本。它可以通过使用文件菜单中下载作为选项导出到各种文件格式。Jupyter 还有 nbconvert 选项形式的命令行界面。默认情况下,nbconvert 将笔记本导出为 HTML 格式。您可以使用以下命令用于此目的 −
jupyter nbconvert mynotebook.ipynb
这会将 mynotebook.ipynb 转换为 mynotebook.html 。其他导出格式通过 --to
子句指定。
请注意,其他选项包括 ['asciidoc', 'custom', 'html', 'latex', 'markdown', 'notebook', 'pdf', 'python', 'rst', 'script', 'slides']
HTML 包含 'basic' 和 'full' 模板。您可以按如下所示在命令行中指定 −
jupyter nbconvert --to html --template basic mynotebook.ipynb
LaTex 是一种特别用于科学排版的文档编制格式。Jupyter 包含 'base', 'article' 和 'report' 模板。
jupyter nbconvert --to latex –template report mynotebook.ipynb
要通过 latex 生成 PDF,请使用以下命令 −
jupyter nbconvert mynotebook.ipynb --to pdf
笔记本可以导出到 HTML 幻灯片放映。转换在后台使用 Reveal.js。要由 HTTP 服务器处理幻灯片,请在命令行中添加 --postserve。要生成不需要 Internet 连接的幻灯片,只需将 Reveal.js 库放在 your_talk.slides.html 所在的同一目录中。
jupyter nbconvert myslides.ipynb --to slides --post serve
markdown 选项将笔记本转换为简单的 markdown 输出。Markdown 单元格不受影响,而代码单元格缩进了 4 个空格。
--to markdown
您可以使用 rst 选项将笔记本转换为 Basic reStructuredText 输出。它可以用作将笔记本嵌入到 Sphinx 文档中的起点。
--to rst
这是从笔记本中获取 Python(或其他语言,取决于内核)脚本的最简单方法。
--to script
Jupyter Notebook - IPyWidgets
IPyWidgets 是一个用于 Jupyter 笔记本的 HTML 交互式小部件的 Python 库。库中的每个 UI 元素都可以响应事件并调用指定的事件处理程序函数。它们增强了 Jupyter 笔记本应用程序的交互功能。
为了在笔记本中加入小部件,我们必须导入以下模块,如下图所示 −
from ipywidgets import widgets
一些基本的 IPyWidgets 在此处解释 −
Jupyter QtConsole - Getting Started
在本章中,让我们了解如何开始使用 QtConsole。本章将为您概述此软件并说明其安装步骤。
Overview
Qt 控制台是一款类似于 IPython 终端的 GUI 应用程序。然而,它提供了一些在基于文本的 IPython 中无法获取的增强功能。增强功能包括:内联图形、具有语法高亮的多分行编辑、图形化调用提示等。Qt 控制台可以用任何 Jupyter 内核,缺省为 IPython 内核。
Installation
Jupyter QtConsole 是 Project Jupyter 的一部分。Anaconda 发行版中已经包含了 QTconsole 应用程序。若要自行安装,请使用 pip 命令,如下所示:
pip3 install qtconsole
您还可以使用 conda 命令来达到此目的:
conda install qtconsole
您可以从 Anaconda 导航器启动 Jupyter 控制台。若要从命令行启动它,您应该使用以下命令,可以在 Windows 命令提示符或 Anaconda 提示符中使用:
jupyter qtonsole
您将获得一个类似于 IPython 终端的终端,开头是 In[] 提示。现在您可以执行任何 Python 表达式,就像我们在 IPython 终端或 Jupyter 笔记本中执行的一样。
Jupyter QtConsole - Multiline Editing
多行编辑是 IPython 终端中不可用的特性之一。为了在单一输入单元中输入多条语句,在第一行后按下 ctrl+enter 。此后,仅仅按下回车即可在同一单元中添加新行。若要停止输入新行并运行单元,再次在结尾处按下回车键。单元将运行,并且输出将显示在下一个 out[] 单元中。
Jupyter QtConsole - Inline Graphics
QtConsole 提供的另一个重要增强功能是能够显示内联图形,尤其适用于图表。此功能适用于 Matplotlib 和其他绘图库。
Jupyter QtConsole - Save to HTML
在 File 菜单中提供将 QtConsole 输出保存为 HTML 文件的此选项。你可以选择创建带有嵌入图像的文件,或者将绘图图形作为一个外部 png 文件放在一个邻接文件夹(名为 qt_files)中。
Jupyter QtConsole - Multiple Consoles
您可以在 Jupyter 控制台应用程序中打开多个选项卡。文件菜单中提供了三个选项来实现此目的。
-
New Tab with New kernel − 您可用此文件菜单加载一个新的内核。
-
New Tab with Existing kernel − 使用此选项,您可以选择除了 IPython 内核以外的其他内核。
-
New Tab with Same Kernel − 这将创建一个在特定选项卡上加载的内核的从属内核。因此,在主选项卡上初始化的对象在从属内核中也可访问,反之亦然。
Connecting to Jupyter Notebook
有一个可供与 Jupyter notebook 一起使用的 %qtconsole 魔术命令。这将调用 QtConsole 作为 notebook 前端的从属终端。因此,可以在 notebook 和 Qtconsole 终端之间共享数据。
您可以看到 notebook 中的变量可在 qtconsole 窗口内访问。此外,Qtconsole 中的新变量已在 notebook 中重新使用。
请注意,两个输入单元格和输出单元格之间的编号是递增的。
Using github and nbviewer
Sharing Jupyter notebook – Using github and nbviewer
当一个 GitHub 仓库中的 Jupyter Notebook 文件带有 .ipynb 扩展名时,当它们被打开时,它们将被渲染成静态 HTML 文件。笔记本的交互特性,诸如自定义的 JavaScript 绘图,将无法在你 GitHub 中的仓库中工作。
要使用 GitHub 共享笔记本文件,请登录到 https://github.com ,创建一个公共仓库。然后使用文件上传按钮上传你的文件,如下所示:
这会给你一个选择来提交对仓库所做更改的机会。然后,仓库会显示如下上传的文件:
点击上传的文件在 GitHub 查看器中查看。你可以把高亮的网址分享给别人。
查看笔记本文件的另一种方法是使用 Project Jupyter 的 nbviewer 工具。打开 https://nbviewer.jupyter.org/ ,把你的仓库的文件 URL 放到文本框中,如所示。按下 Go 按钮查看笔记本。
这两种方法都会把笔记本文件显示为静态 HTML。为了能够在笔记本中执行代码,使用 Jupyter 项目的 Binder 应用程序打开它。
在 nbviewer 窗口中,你会看到 “在 Binder 中执行” 按钮。点击它,你会看到笔记本文件被打开,就像你从本地机器中笔记本服务器的本地仪表盘打开它一样。你可以执行诸如添加/编辑单元格、运行单元格等所有操作。
JupyterLab - Overview
Project Jupyter 将 JupyterLab 描述为 Jupyter 生态系统下所有产品的下一代基于 Web 的用户界面。它使你能够以一种可扩展的方式与笔记本、编辑器和终端无缝工作。
下面讨论了 JupyterLab 的一些重要功能:
-
代码控制台可用作以交互方式运行代码的便笺本。它全面支持丰富型输出,并且可以链接到笔记本内核以记录笔记本活动。
-
可以在任何 Jupyter 内核中以交互方式运行任何文本文件(Markdown、Python、R、LaTeX 等)。
-
笔记本单元输出可以显示到自己的选项卡中,或者与笔记本一起显示,从而实现由内核支持具有交互式控件的简单仪表板。
-
文稿的实时编辑会在其他阅读器(如编辑器或控制台)中反映出来。可以实时预览 Markdown、以分隔符分隔的值,或 Vega/Vega-Lite 文稿。
JupyterLab 可以处理许多文件格式(图像、CSV、JSON、Markdown、PDF 等)。它还以这些格式显示丰富型输出。JupyterLab 提供可自定义的键盘快捷方式,它使用许多知名文本编辑器的键映射。
JupyterLab - Installation and Getting Started
在安装之前你可以在线试用 JupyterLab 的功能。访问 https://jupyter.org/try 并选择“试用 JupyterLab”选项。
启动器标签显示当前可用的内核和控制台。你可以基于它们任何一个启动一个新的笔记本/终端。左列也有用于文件浏览器、运行内核、标签页和设置视图的标签页。
JupyterLab 通常通过 Anaconda 分发自动安装。但是,它也可以通过以下 conda 命令单独安装 −
conda install -c conda-forge jupyterlab
您还可以为此使用 pip 命令 −
pip3 install jupyterlab
要启动 JupyterLab 应用程序,最方便的方法是通过安装的 Anaconda 导航器。
或者从 Windows/Linux 命令终端或 Anaconda 提示符使用此命令从命令行启动它 −
jupyter lab
无论哪种方式,JupyterLab 应用程序的启动画面如下所示 −
JupyterLab - Interface
若要启动一个新的笔记本,请单击所需的内核。在以上屏幕截图中,可以看到一个内核,即 Python3 内核。单击它以启动一个 Python 笔记本。请注意,它的功能类似于我们本教程中所研究的功能。
Menu Bar
菜单栏在窗口的顶部。您可以在其中找到的缺省菜单是:
-
File − 与文件和目录相关的操作。
-
Edit − 与编辑文档和其他活动相关的操作。
-
View − 更改 JupyterLab 外观的动作。
-
Run − 在不同活动(例如笔记本和代码控制台)中运行代码的动作。
-
Kernel − 管理内核的动作,内核是用于运行代码的独立进程。
-
Tabs − 对接面板中打开文档和活动的列表。
-
Settings − 常用设置以及高级的设置编辑器。
-
Help - JupyterLab 和内核帮助链接列表。
左边的侧边栏显示按钮用于启动新启动器、添加文件夹、上传文件和刷新文件列表。右侧窗格是主要工作区域,其中笔记本、控制台和终端以标签视图显示。
若要启动新控制台,请单击左侧边栏中的 + 符号以打开新启动器,然后单击控制台选项。控制台将在右侧窗格的新标签中打开。
请注意,输入单元格位于底部,但运行后,单元格及其相应的输出单元格将显示在控制台标签的上部。
启动器还允许您打开一个文本编辑器和一个可以调用 IPython shell 的终端。