JupyterNotebook#

介绍#

该Notebook将基于控制台的交互式计算方法扩展到了一个全新的定性方向,提供了一个适合于捕获整个计算过程的基于Web的应用程序:开发、记录和执行代码,以及传递结果。JupyterNotebook包含两个部分:

Web应用程序 :一种基于浏览器的文档交互创作工具,将解释性文本、数学、计算及其富媒体输出结合在一起。

Notebook文档 :Web应用程序中可见的所有内容的表示,包括计算的输入和输出、解释性文本、数学、图像和对象的富媒体表示。

参见

installation guide 关于如何安装Notebook及其依赖项。

Web应用程序的主要功能#

  • 在浏览器中编辑代码,自动突出显示语法、缩进和制表符完成/反省。

  • 从浏览器执行代码的能力,计算结果附加到生成代码的代码上。

  • 使用富媒体表示(如HTML、LaTex、PNG、SVG等)显示计算结果。例如,由 matplotlib 库,可以内联包含。

  • 在浏览器中使用 Markdown 可以为代码提供注释的标记语言不限于纯文本。

  • 能够使用 Latex 在标记单元中轻松包含数学符号,并通过 MathJax.

Notebook文档#

Notebook文档包含交互式会话的输入和输出,以及代码附带但不用于执行的附加文本。通过这种方式,Notebook文件可以作为会话的完整计算记录,将可执行代码与解释性文本、数学和结果对象的丰富表示交织在一起。这些文件是内部的 JSON 文件并与一起保存 .ipynb 延伸。由于JSON是纯文本格式,因此可以对其进行版本控制并与同事共享。

Notebook可以导出为一系列静态格式,包括HTML(例如,用于博客文章)、RestructuredText、LaTex、PDF和幻灯片,通过 nbconvert 命令。

此外,任何 .ipynb 可从公共URL获得的笔记本文档可通过Jupyter笔记本查看器共享。该服务从url加载笔记本文档,并将其呈现为静电网页。因此,结果可以与同事共享,或者作为公共博客帖子发布,而不需要其他用户自己安装Jupyter笔记本。实际上,nbviewer仅仅是 nbconvert 作为一项Web服务,所以您可以使用nbConvert进行自己的静电转换,而不需要依赖nbviewer。

Notebook和隐私#

因为在Web浏览器中使用jupyter,所以可以理解的是,有些人担心在敏感数据中使用jupyter。但是,如果您遵循标准 install instructions ,Jupyter实际上在您自己的计算机上运行。如果地址栏中的URL以 http://localhost:http://127.0.0.1: ,它是你的电脑作为服务器。Jupyter不会将您的数据发送到任何其他地方,因为它是开源的,所以其他人可以检查我们是否诚实。

您还可以远程使用jupyter:例如,您的公司或大学可能为您运行服务器。如果您想在这些情况下处理敏感数据,请与您的IT或数据保护人员联系。

我们的目标是确保您浏览器中的其他页面或同一台计算机上的其他用户无法访问您的笔记本服务器。请参阅 security documentation 了解更多有关这方面的信息。

启动Notebook服务器#

可以使用以下命令从命令行开始运行Notebook服务器:

jupyter notebook

这将在控制台中打印关于Notebook服务器的一些信息,并打开Web浏览器到Web应用程序的URL(默认情况下, http://127.0.0.1:8888

JupyterNotebook电脑Web应用程序的登录页 仪表板 ,显示Notebook目录中当前可用的Notebook(默认情况下,Notebook服务器的启动目录)。

您可以使用 New Notebook 按钮,或通过单击其名称打开现有的按钮。您还可以拖放 .ipynb Notebook和标准 .py python源代码文件进入Notebook列表区域。

从命令行启动Notebook服务器时,还可以直接打开特定Notebook,绕过仪表板,使用 jupyter notebook my_notebook.ipynb . 这个 .ipynb 如果没有给出扩展,则假定为扩展。

当你在一个打开的Notebook里时, File | Open... 菜单选项将在新的浏览器选项卡中打开仪表板,以允许您从Notebook目录中打开另一个Notebook或创建新Notebook。

备注

如果要在不同目录下使用Notebook,可以同时启动多个Notebook服务器。默认情况下,第一台Notebook服务器从端口8888开始,稍后Notebook服务器将搜索该端口附近的端口。您还可以使用 --port 选择权。

创建新Notebook文档#

可以随时从仪表板或使用 File ‣ New 活动Notebook中的菜单选项。新Notebook将在同一目录中创建,并将在新的浏览器选项卡中打开。它还将作为新条目反映在仪表板上的Notebook列表中。

_images/new-notebook.gif

打开Notebook#

打开的Notebook有 恰好一 连接到内核的交互式会话,该会话将执行用户发送的代码并返回结果。如果关闭Web浏览器窗口,此内核将保持活动状态,并且从仪表板重新打开同一Notebook将使Web应用程序重新连接到同一内核。在仪表板中,具有活动内核的Notebook具有 Shutdown 它们旁边的按钮,而没有活动内核的Notebook有一个 Delete 按钮就位。

其他客户机可以连接到同一个内核。当每个内核启动时,Notebook服务器向终端打印如下消息:

[JupyterNotebookApp] Kernel started: 87f7d2c0-13e3-43df-8bb8-1bd37aaf3373

这个长字符串是内核的ID,它足以获取连接到内核所需的信息。如果Notebook使用ipython内核,您还可以通过运行 %connect_info magic ,将打印相同的ID信息以及其他详细信息。

例如,您可以手动启动连接到 same 来自命令行的内核,通过传递ID的一部分:

$ jupyter qtconsole --existing 87f7d2c0

没有身份证, --existing 将连接到最近启动的内核。

使用ipython内核,还可以运行 %qtconsole magic 在Notebook中打开一个连接到同一内核的qt控制台。

Notebook用户界面#

当您创建新的Notebook文档时,您将看到 Notebook名称 ,A 菜单栏 ,A 工具栏 空了 编码单元 .

_images/blank-notebook-ui.png

Notebook名称 :显示在页面顶部的Jupyter徽标旁边的名称反映了 .ipynb 文件。单击Notebook名称会弹出一个对话框,允许您重命名它。因此,在浏览器中将Notebook从“unttleted0”重命名为“我的第一个Notebook”,重命名 Untitled0.ipynb 文件到 My first notebook.ipynb .

菜单栏 :菜单栏显示不同的选项,可用于操作Notebook的功能方式。

工具栏 :通过单击图标,工具栏可以快速执行Notebook中最常用的操作。

编码单元 :单元格的默认类型;继续阅读了解单元格的说明。

Notebook文档的结构#

Notebook由一系列单元格组成。单元格是多行文本输入字段,其内容可以使用 Shift-Enter 或单击工具栏上的“播放”按钮,或 CellRun 在菜单栏中。单元的执行行为由单元的类型决定。有三种类型的单元格: 代码单元Markdown单元原始单元格 . 每个单元格开始都是一个 编码单元 ,但其类型可以通过使用工具栏上的下拉列表(最初为“代码”)或通过 keyboard shortcuts .

有关您可以在笔记本中执行的不同操作的更多信息,请参阅 collection of examples

代码单元#

A 编码单元 允许您编辑和编写新代码,并突出显示完整的语法和制表符。您使用的编程语言取决于 内核 默认内核(ipython)运行python代码。

当执行代码单元时,它包含的代码将发送到与Notebook相关联的内核。然后,从该计算返回的结果显示在Notebook中,作为单元格的 输出 . 输出不仅限于文本,还有许多其他可能的输出形式,包括 matplotlib 图和HTML表(例如,在 pandas 数据分析包)。这就是众所周知的伊普敦 丰富显示 能力。

参见

Rich Output Notebook示例

Markdown单元#

您可以用文献的方式记录计算过程,用代码交替描述文本,使用 富文本 . 在IPython中,这是通过使用标记语言标记文本来完成的。相应的单元格被调用 Markdown单元 . 标记语言提供了一种执行此文本标记的简单方法,即指定应强调的文本部分(斜体)、粗体、表单列表等。

如果要为文档提供结构,可以使用降价标题。降价标题由1到6个散列符号组成 # 后面是一个空格和您所在分区的标题。标记标题将转换为Notebook分区的可单击链接。当导出为其他文档格式(如PDF)时,它也用作提示。

执行降价单元格时,降价代码将转换为相应的格式富文本。标记允许任意HTML代码进行格式设置。

在Markdown单元格中,您还可以包括 数学 以一种简单的方式,使用标准LaTeX表示法: $...$ for inline mathematics and $$...$$ for displayed mathematics. When the Markdown cell is executed, the LaTeX portions are automatically rendered in the HTML output as equations with high quality typography. This is made possible by MathJax, which supports a large subset LaTeX功能的

由 Latex 和AMS Latex 定义的标准数学环境 amsmath 包)也可以工作,例如 \begin{{equation}}...\end{{equation}}\begin{{align}}...\end{{align}} . 新的LaTex宏可以使用标准方法定义,例如 \newcommand 把它们放在任何地方 数学分隔符之间 在Markdown单元格中。这些定义在IPython会话的其余部分都可用。

参见

Working with Markdown Cells Notebook示例

原始单元格#

Raw 单元格提供了一个可以写入的位置 输出 直接。Notebook不评估原始单元格。通过时 nbconvert, 原始单元格以未修改的目标格式到达。例如,您可以将完整的 Latex 键入原始单元,该单元只有在通过nbconvert转换后才由 Latex 呈现。

基本工作流程#

然后,Notebook中的正常工作流与标准的IPython会话非常相似,不同之处在于,您可以在获得所需结果之前多次就地编辑单元格,而不必使用 %run 魔法命令。

通常,您将分块处理一个计算问题,将相关的想法组织到单元中,并在前面的部分正常工作后继续前进。这比将计算拆分为必须一起执行的脚本(如以前所必需的那样),特别是当其中的某些部分需要很长时间才能运行时,更方便进行交互式探索。

若要中断耗时太长的计算,请使用 KernelInterrupt 菜单选项,或 i,i 键盘快捷键。同样,要重新启动整个计算过程,请使用 KernelRestart 菜单选项或 0,0 捷径。

Notebook可以下载为 .ipynb 文件或使用菜单选项转换为许多其他格式 FileDownload as .

参见

Running Code in the Jupyter Notebook Notebook示例

Notebook Basics Notebook示例

键盘快捷键#

Notebook中的所有操作都可以用鼠标执行,但键盘快捷键也可用于最常见的操作。要记住的基本快捷方式如下:

  • Shift-Enter 运行单元

    执行当前单元格,显示任何输出,并跳转到下面的下一个单元格。如果 Shift-Enter 在最后一个单元格上调用,它将在下面生成一个新单元格。这相当于单击 CellRun 菜单项或工具栏中的“播放”按钮。

  • Esc 命令模式

    在命令模式下,可以使用键盘快捷键在Notebook上导航。

  • Enter 编辑模式

    在编辑模式下,可以编辑单元格中的文本。

有关可用快捷方式的完整列表,请单击 HelpKeyboard Shortcuts 在Notebook菜单中。

作图#

JupyterNotebook的一个主要特点是能够显示运行代码单元的输出图。ipython内核设计为与 matplotlib 打印库以提供此功能。特定的绘图库集成是内核的一个特性。

安装内核#

有关如何安装Python内核的信息,请参阅 IPython install page .

Jupyter wiki有一长串 Kernels for other languages . 它们通常附带了如何使内核在Notebook中可用的说明。

信任Notebook#

为了防止不受信任的代码在Notebook打开时代表用户执行,我们存储每个受信任Notebook的签名。Notebook服务器在打开Notebook时验证此签名。如果没有找到匹配的签名,则在通过重新执行单元格重新生成之前,不会显示javascript和HTML输出。

您完全执行自己的任何Notebook都将被视为受信任的Notebook,其HTML和JavaScript输出将在加载时显示。

如果您需要在不重新执行的情况下查看HTML或JavaScript输出,并且您确信Notebook不是恶意的,则可以在命令行告诉Jupyter信任它,命令行为:

$ jupyter trust mynotebook.ipynb

请参阅 security documentation 有关信任机制的更多详细信息,请参阅。

浏览器兼容性#

JupyterNotebook旨在支持这些浏览器的最新版本:

  • 游猎

  • 火狐

Opera和Edge的最新版本也可以使用,但如果不使用,请使用受支持的浏览器之一。

将safari与https和不受信任的证书一起使用是不起作用的(websockets将失败)。