木星笔记本#

引言#

Jupyter Notebook 是笔记本创作应用程序,位于 [Project Jupyter] (https://docs.jupyter.org/en/latest/)雨伞。建立在 [computational notebook format] (https://docs.jupyter.org/en/latest/#what-is-a-notebook), Jupyter Notebook 提供快速、交互的新方法来原型化和解释您的代码,探索和可视化您的数据,并与其他人分享您的想法。

Notebook将基于控制台的方法扩展到一个全新的方向,提供了一个基于Web的应用程序,适用于捕获整个计算过程:开发、记录和执行代码,以及交流结果。Jupyter笔记本电脑结合了两个组件:

A web application: 一个基于浏览器的编辑程序,用于计算笔记本的交互创作,它提供了一个快速的交互环境,用于原型化和解释代码、浏览和可视化数据以及与其他人分享想法

Computational Notebook documents :一种可共享的文档,它结合了计算机代码、简单的语言描述、数据、丰富的可视化效果,如3D模型、图表、数学、图形和图形以及交互控件

参见

有关如何安装笔记本及其依赖项,请参阅安装指南

Web应用程序的主要功能#

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

  • 能够从浏览器执行代码,并将计算结果附加到生成计算结果的代码中。

  • 使用富媒体表示形式(如HTML、LaTeX、PNG、SVG等)显示计算结果。 [matplotlib] 库,可以内联包含。

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

  • 能够使用LaTeX轻松地在标记单元格中包含数学符号,并通过本地呈现 [MathJax] 。

笔记本文档#

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

笔记本可以导出为一系列静态格式,包括HTML(例如,用于博客文章)、reStrucredText、LaTeX、PDF和幻灯片放映,通过 [nbconvert] 指挥部。

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

参见

笔记本JSON文件格式详情

笔记本和隐私#

因为你在网络浏览器中使用Jupyter,所以一些人对使用它处理敏感数据感到担忧,这是可以理解的。然而,如果你遵循标准 [install instructions] (https://jupyter.readthedocs.io/en/latest/install.html),jupyter实际上是在您自己的计算机上运行的。如果地址栏中的URL以 http://localhost:http://127.0.0.1: ,它是您的计算机充当服务器。Jupyter不会将您的数据发送到其他任何地方--而且由于它是开源的,其他人可以检查我们对此是否诚实。

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

我们的目标是确保您浏览器中的其他页面或同一台计算机上的其他用户无法访问您的笔记本服务器。请参阅 [security documentation] (https://jupyter-server.readthedocs.io/en/stable/operators/security.html)获取有关这方面的更多信息。

启动笔记本电脑服务器#

您可以使用以下命令从命令行开始运行笔记本服务器:

jupyter notebook

这将在您的控制台中打印有关笔记本服务器的一些信息,并打开Web浏览器指向Web应用程序的URL(默认情况下, http://127.0.0.1:8888 )。

Jupyter笔记本Web应用程序的登录页 dashboard 显示笔记本目录(默认情况下是启动笔记本服务器的目录)中当前可用的笔记本。

您可以使用从仪表板创建新笔记本 New Notebook 按钮,或通过单击它们的名称打开现有的。您还可以拖放 .ipynb 笔记本电脑和标准 .py 将Python源代码文件放入笔记本列表区域。

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

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

备注

如果要处理不同目录中的笔记本,则可以同时启动多个笔记本服务器。默认情况下,第一台笔记本服务器在端口8888上启动,之后的笔记本服务器会搜索该端口附近的端口。属性手动指定端口。 --port 选择。

创建新的笔记本文档#

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

好了! [a screencast showing how to create new notebooks from the user interface] (https://user-images.githubusercontent.com/591645/229563554-2776b489-a831-44a0-a7a2-2f211e38b78b.gif)

打开笔记本#

打开的笔记本电脑有 exactly one 连接到内核的交互式会话,它将执行用户发送的代码并传回结果。如果关闭Web浏览器窗口,此内核将保持活动状态,并且从仪表板重新打开相同的笔记本将使Web应用程序重新连接到相同的内核。在仪表板中,具有活动内核的笔记本电脑具有 Shutdown 按钮,而没有活动内核的笔记本电脑有一个 Delete 按钮放回原处。

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

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

This long string is the kernel's ID which is sufficient for getting the information necessary to connect to the kernel. If the notebook uses the IPython kernel, you can also see this connection data by running the %connect_info magic, which will print the same ID information along with other details.

然后,例如,可以手动启动连接到 same 内核,通过传递ID的一部分:

$ jupyter qtconsole --existing 87f7d2c0

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

With the IPython kernel, you can also run the %qtconsole magic in the notebook to open a Qt console connected to the same kernel.

笔记本用户界面#

当您创建新的笔记本文档时,您将看到 notebook name 一种 menu bar 一种 toolbar 和一个空的 code cell

好了! [a screenshot showing a blank notebook] (https://user-images.githubusercontent.com/591645/229563988-8e3a4d04-6f31-4411-9a6b-9b9b045bc55e.png)

Notebook name :显示在页面顶部Jupyter徽标旁边的名称反映了 .ipynb 文件。点击笔记本名称将弹出一个对话框,允许您对其进行重命名。因此,在浏览器中将笔记本从“Untiled0”重命名为“My First Notebook”,将重命名 Untitled0.ipynb 将文件保存到 My first notebook.ipynb

Menu bar :菜单栏显示可用于操纵笔记本功能的不同选项。

Toolbar :工具栏提供了一种快速执行笔记本内最常用操作的方法,只需点击一个图标即可。

Code cell :单元格的默认类型;请继续阅读单元格的说明。

笔记本文档的结构#

The notebook consists of a sequence of cells. A cell is a multiline text input field, and its contents can be executed by using Shift-Enter, or by clicking either the "Play" button the toolbar, or Cell, Run in the menu bar. The execution behavior of a cell is determined by the cell's type. There are three types of cells: code cells, markdown cells, and raw cells. Every cell starts off being a code cell, but its type can be changed by using a drop-down on the toolbar (which will be "Code", initially), or via keyboard shortcuts.

有关您可以在笔记本中执行的不同操作的更多信息,请参阅 [collection of examples] (https://nbviewer.jupyter.org/github/jupyter/notebook/tree/main/docs/source/examples/Notebook/).

编码信元#

A_代码 cell_ 允许您编辑和编写新代码,具有完整的语法突出显示和制表符完成功能。您使用的编程语言取决于 kernel, 默认内核(IPython)运行的是Python代码。

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

参见

[Rich Output] 示例笔记本

减价单元格#

您可以以文字的方式记录计算过程,使用_RICH交替使用描述性文本和代码 text_. 在IPython中,这是通过用Markdown语言标记文本来实现的。相应的单元格称为_Markdown cells_. Markdown语言提供了一种执行此文本标记的简单方法,即指定文本的哪些部分应该突出显示(斜体)、粗体、表单列表等。

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

当执行Markdown单元格时,Markdown代码将转换为相应的格式化富文本。Markdown允许使用任意的HTML代码进行格式化。

在Markdown单元格中,您还可以包括 mathematics 以一种简单的方式,使用标准LaTeX表示法: $...$ 用于内联数学和 $$...$$ 用于展示数学。当执行Markdown单元格时,LaTeX部分将自动呈现为具有高质量排版的公式。这是通过以下方式实现的 [MathJax] ,它支持 [large subset] LaTeX功能的(https://docs.mathjax.org/en/latest/input/tex/index.html)

Standard mathematics environments defined by LaTeX and AMS-LaTeX (the amsmath package) also work, such as \begin{equation}...\end{equation}, and \begin{align}...\end{align}. New LaTeX macros may be defined using standard methods, such as \newcommand, by placing them anywhere between math delimiters in a Markdown cell. These definitions are then available throughout the rest of the IPython session.

参见

[Working with Markdown Cells] 示例笔记本

原始细胞#

Raw 单元格提供了一个您可以在其中书写的地方 output 直接去吧。原始单元格不会由笔记本进行评估。当通过时 [nbconvert] ,原始单元格原封不动地以目标格式到达。例如,您可以在原始单元格中键入Full LaTeX,只有在由nbConvert进行转换后,LaTeX才会呈现该单元格。

基本工作流程#

因此,笔记本中的正常工作流非常类似于标准的IPython会话,不同之处在于您可以多次就地编辑单元格,直到获得所需的结果,而不必使用 %run 神奇的命令。

通常,您将处理计算问题,将相关想法组织到单元格中,并在前面的部分正常工作后继续进行。对于交互式探索,这比将计算分解为必须一起执行的脚本要方便得多,因为以前需要这样做,特别是如果其中一部分需要很长时间才能运行的话。

要中断耗时过长的计算,请使用内核中断菜单选项或键盘快捷键。同样,要重新启动整个计算过程,可以使用、菜单选项或0,0快捷方式。

A notebook may be downloaded as a .ipynb file or converted to a number of other formats using the menu option File, Download as.

参见

[Running Code in the Jupyter Notebook] 示例笔记本

[Notebook Basics] 示例笔记本

键盘快捷键#

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

  • Shift-Enter:运行单元格:执行当前单元格,显示任意输出,跳转到下面的下一个单元格。如果在最后一个单元格上调用了Shift-Enter,则会在下面创建一个新单元格。这相当于点击工具栏中的Cell、菜单项或播放按钮。

  • Es:命令模式:在命令模式下,您可以使用键盘快捷键在笔记本电脑中导航。

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

有关可用快捷键的完整列表,请单击笔记本菜单中的帮助键盘快捷键

搜索#

Jupyter Notebook有一个高级的内置搜索插件,用于在笔记本或其他文档中查找文本,默认情况下使用Ctrl-F(对于MacOS为Cmd+F)快捷方式。

您的浏览器 find 函数将产生意想不到的结果,因为它无法访问文档的全部内容(默认情况下),但如果您愿意,您仍然可以使用浏览器菜单中的浏览器查找功能,或者您可以使用高级设置编辑器禁用内置的搜索快捷方式。

或者,您可以禁用窗口笔记本呈现,以牺牲性能为代价向浏览器显示完整的文档内容。

标绘#

Jupyter笔记本的一个主要功能是能够显示运行代码单元格的输出曲线图。IPython内核被设计为与 [matplotlib] 绘图库来提供此功能。特定的绘图库集成是内核的一个功能。

安装内核#

有关如何安装Python内核的信息,请参阅 [IPython install page] (https://ipython.org/install.html).)

Jupyter维基有一长串 [Kernels for other languages] (https://github.com/jupyter/jupyter/wiki/Jupyter-kernels).它们通常附带如何使内核在笔记本中可用的说明。

信任笔记本电脑#

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

您自己完全执行的任何笔记本都将被认为是可信的,并且其HTML和Java脚本输出将在加载时显示。

如果您需要在不重新执行的情况下查看HTML或Java脚本输出,并且您确定笔记本不是恶意的,则可以在命令行中使用以下命令告诉Jupyter信任它:

$ jupyter trust mynotebook.ipynb

请参阅 [security documentation] (https://jupyter-server.readthedocs.io/en/stable/operators/security.html)获取有关信任机制的更多详细信息。

浏览器兼容性#

Jupyter笔记本旨在支持以下浏览器的最新版本:

  • 狩猎

  • 火狐

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

将Safari与HTTPS和不受信任的证书一起使用是不起作用的(WebSockets将失败)。