IPython 显示

2025年3月17日 | 阅读 12 分钟

IPython 的意思是交互式 Python。它是一个用于 Python 的交互式命令行终端。它为 Python 计算提供了一个 IPython 终端和基于 Web 的(Notebook)平台。它比标准的 Python 解释器拥有更高级的功能,并且可以快速执行单行 Python 代码。

Python 和 IPython 是两个名字相似但完全不同的东西。

Python

Python 是一种流行的编程语言。它由 Guido Van Rossum 创建,并于 1991 年在荷兰 CWI(数学和信息科学中心)发布。Python 是一种通用的、高级的编程语言,并且 Python 也是动态的。

Python 简单易学,它独立于平台,并且是免费和开源的。它拥有丰富的库支持,同时也是可嵌入和可扩展的。

Python 库包括 Numpy、Scipy、pandas 和 matplotlib。我们可以非常快速地使用 Python,而且它是动态的,这使得它成为一种高效的语言。

IPython

IPython 是一个用于 Python 的交互式命令行终端。它由 Fernando Perez 于 2001 年创建。它提供了一个增强的“读取-求值-打印”循环(REPL)环境,并且特别适用于科学计算。

IPython 是 Python 语言的一个强大接口。除了 Python 之外,使用 Python 最常见的方式是编写带有“.py”扩展名的脚本和文件。

脚本包含一系列按顺序执行的命令,它会从头到尾运行并显示一些输出。换句话说,使用 IPython,我们一次编写一个命令并快速得到结果。这是一种完全不同的使用 Python 的方式。在分析数据或运行计算模型时,我们需要这种交互性来高效地探索它们。

Jupyter Notebook

2011年,IPython 引入了一个名为“Notebook”的新工具。Notebook 的灵感来源于 Mathematica 或 Sage;它为 Python 提供了一个现代化且功能强大的 Web 界面。

与最初的 IPython 终端相比,Notebook 提供了更方便的文本编辑器,并能够编写具有改进图形功能的富文本。由于它是一个 Web 界面,它集成了许多现有的用于数据可视化的 Web 库,包括 plotly.js

2015年,IPython 的开发者对他们的项目进行了重大的代码重组。因此,Notebook 现在被称为 Jupyter Notebook。这个界面不仅可以与 Python 一起使用,还可以与 R 和 Julia 等多种语言一起使用。IPython 现在是 Python 后端的名称。

IPython 和 Jupyter 都是 Python 语言的优秀接口。如果你正在学习 Python,强烈推荐使用 IPython 终端或 Jupyter Notebook。

安装

IPython 为交互式计算提供了一个丰富的架构,具体包括:

  1. 一个强大的交互式 shell。
  2. Jupyter 的内核。
  3. 它支持交互式数据可视化和 GUI 工具包的使用。
  4. 它灵活、可嵌入,并且解释器可以加载到我们的项目中。
  5. 它是一个易于使用的高性能并行计算工具。

Jupyter 和 IPython 的未来

IPython 是一个不断发展的项目,其语言组件也在不断增加。IPython 3.x 是 IPython 的最后一个单体版本,包含了 notebook 服务器、qtconsole 等。从 IPython 4.0 开始,项目中与语言无关的部分:notebook 格式、消息协议、qtconsole、notebook web 应用程序等,都已迁移到名为 Jupyter 的新项目下。IPython 本身则专注于交互式 Python,其中一部分是为 Jupyter 提供 Python 内核。

IPython 的特点

  1. 它提供了一个强大的交互式 Python shell。
  2. 它充当 Jupyter Notebook 和 Jupyter 项目其他前端工具的主要内核。
  3. 它具有对象内省能力。内省这个词意味着在运行时观察对象属性的能力。
  4. 它支持语法高亮。
  5. 它会存储交互历史。
  6. 它包括关键字、变量和函数名的 Tab 补全功能。
  7. 它包含一个魔术命令系统,有助于控制 Python 环境并执行操作系统任务。
  8. 它可以嵌入到其他 Python 程序中。
  9. 它提供了对 Python 调试器的访问。

历史与发展

Fernando Perez 于 2001 年开发了 IPython。IPython 的当前版本是 IPython 1.0.1,它需要 Python 3.4 或更高版本。IPython 6.0 是第一个支持 Python 3 的版本。使用 Python 2.7 的用户应该使用 IPython 的 2.0 到 5.7 版本。

如何在 Jupyter Notebook 中显示富媒体内容(图像、音频、视频等)?

Jupyter Notebook 和 Lab 已成为全球数据科学家和开发人员执行数据分析及相关任务的首选工具。

Jupyter Notebook 之所以出名,是因为其用户友好的界面和开箱即用的功能,支持在 notebook 中执行 shell 命令。这使它们成为数据科学界独特且首选的工具。

Jupyter Notebook 基于 IPython 内核,该内核在底层运行。IPython 内核就像一个标准的 Python 解释器,但具有许多附加功能。

全球大多数数据科学家都使用 Jupyter Notebook,它支持显示图像、Markdown、LaTeX、视频、音频、HTML 等富媒体内容。这让用户免于使用不同工具来查看多种类型内容的麻烦。我们可以在 notebook 中播放显示的音频和视频。

当我们在分析过程中创建的 notebook 中包含静态和交互式图表时,我们甚至可以开发出“voila”仪表板。

所有的分析部分都集中在一个地方,这使得可复现的研究易于进行。这对演示很有帮助,因为许多人使用 Jupyter Notebooks 进行演示。

因此,上述优点使 Jupyter Notebook 成为全球数据科学家最偏爱的工具。

我们如何在 Notebooks 中显示富媒体内容?

为 Jupyter Notebook 提供支持的 IPython 内核有一个名为“display”的模块,它为我们提供了一系列类和方法,用于在 Jupyter Notebook 和 Jupyter Lab 中显示不同类型的富媒体内容。

我们可以从这个 IPython 中学到什么?

我们已经了解了如何在 Jupyter Notebook 中显示富媒体内容/输出。这包括音频/声音、视频、LaTeX、Markdown、HTML、iframe、SVG、PDF 等。

用于显示富输出的函数和类可通过 "IPython.display" 获得,我们已在上一节中列出。

“Ipython.display”模块的重要类和函数

IPython.display 模块提供了一系列类和方法。

下面显示的类将接受特定类型的数据,并且当从 Jupyter Notebook 单元格执行时,将在 Notebook 中显示该类型的内容。

  1. Audio(音频)
  2. 代码
  3. FileLink(文件链接)
  4. FileLinks(多文件链接)
  5. HTML
  6. 图像
  7. IFrame
  8. SVG
  9. JavaScript
  10. 视频
  11. Pretty(格式化输出)
  12. YouTubeVideo(YouTube 视频)
  13. JSON
  14. Markdown

函数

"display_*()" 函数将以上述类创建的多个对象作为输入,并按顺序显示它们。根据它们的名称,这些方法将接受一种类型的对象作为输入,除了最后的 display() 方法,它可以组合不同类型的内容并显示它们。

  1. display_html()
  2. display_jpeg()
  3. display_png()
  4. display_json()
  5. display_pretty()
  6. display()
  7. display_latex()
  8. display_javascript()
  9. display_markdown()

简短的介绍到此结束,现在让我们开始编码部分。我们将从导入 display 模块开始。

如何在 Jupyter Notebook 中显示“音频”或“声音”播放器?

“Audio”类可以在 Jupyter Notebook 中显示音频文件,并提供一个简单的播放器来暂停/播放以收听音频。该方法的第一个参数是“data”,它接受以下输入之一并生成一个 Audio 对象,当显示该对象时,会显示一个可以播放音频的小播放器。

  1. 波形的 numpy 数组(1d 或 2d)
  2. 包含波形的浮点数列表
  3. 本地音频文件名
  4. URL

下面我们输入了一个音频文件的 URL,它将显示一个可以播放该音频的音频对象。我们下面还讨论了从本地文件播放音频的示例。我们还可以设置一个名为 autoplay 的参数,以及一个名为 rate 的参数,它指定了采样率,如果数据以 numpy 数组或浮点数列表的形式提供,则应使用此参数。

当我们将任何类创建的对象作为 notebook 单元格的最后一行时,它将显示该类型的对象。

我们需要注意的是,display 模块中可用的大多数类都提供了一个名为 embed 的布尔参数,它将内容的 DATA URI 放入 notebook 中,这样下次我们就不需要从文件/URL 加载该内容到 notebook 中了。

如何在 Jupyter Notebook 中显示“代码”?

Code 类用于以语法高亮格式显示代码。我们还可以通过以下方式之一向该类提供代码信息。

  1. 代码字符串
  2. 本地文件名
  3. 文件所在的 URL

如何在 Jupyter Notebook 中使用“FileLink”将文件显示为可下载链接?

FileLink 类将在本地文件周围创建链接。它接受一个文件名作为输入,并在其周围创建一个链接。我们还可以使用 result_html_prefixresult_html_suffix 命令在链接周围添加前缀和后缀。

我们还在下面用一些小例子讨论了该类的用法。当我们在 Kaggle、Google Colab 或任何其他不提供访问本地磁盘以下载分析时生成的文件(如绘图文件、权重文件等)的平台上运行 notebook 时,这会很有用。

如何在 Jupyter Notebook 中使用“FileLinks”将目录中的所有文件显示为可下载链接?

“FileLinks”类的作用与 FileLink 类相同;唯一的区别是它接受目录名作为输入,并为所有文件创建一个链接列表。

这里使用了为本例创建的名为 sample_files 的临时文件夹。它提供了一个名为 recursive 的布尔参数,默认为 True,并且会递归所有子目录以显示其中的所有文件。如果我们不想要子目录的链接,也可以将此参数设置为 False。

如何在 Jupyter Notebook 中显示“HTML”?

名为“HTML”的类在 notebook 中显示 HTML。该类接受以下数据类型列表作为输入来创建 HTML 页面。

  1. 包含 HTML 代码的字符串
  2. URL
  3. 本地系统上的 HTML 文件

信息可视化的基本原则

我们将讨论我们收集和分析的数据可视化的简单原则。我们将讨论在形成对人脑有意义的可视化时应牢记的各种原则。我们的主要重点是学习如何帮助呈现数据,这对人脑有用,并且可以很容易地在没有训练的情况下被解释。

数据可视化

数据可视化主要分为三类。它们是:

信息可视化

它指的是没有空间位置的抽象信息,例如表示多年来股价的折线图。

示例:使用 matplotlib、seaborn 等绘制的静态图。

科学可视化

它主要指表示在空间中具有物理表现的数据,如超声检查报告、内燃机中的甲烷分布、CT 扫描报告和 MRI 扫描报告,其中每个数据点在空间中都有一个实际的 3D 位置。

可视化分析

它指的是交互式仪表板、可视化和统计算法,可以从不同方面快速分析。

示例:使用 dash、plotly、voila、panel 等制作的仪表板。

display_html()

display_html() 方法将使用 display.HTML 类创建的对象列表作为输入,并在 Jupyter Notebook 中逐一显示它们。

下面的代码通过一个简单的示例解释了其用法,其中我们将谷歌 URL 的 HTML 和本地文件的 HTML 结合起来。

输出

IPython Display

如何在 Jupyter Notebook 中显示“IFrame”?

IFrame 类将在 Jupyter Notebooks 中显示 iframe,它允许我们指定 IFrame 的宽度和高度。我们需要使用 IFrame 来显示本地 HTML 文件和使用 URL 的 IPython 文档。

如何在 Jupyter Notebook 中显示“图像”?

“Image”类将在 Jupyter Notebook 中显示 jpg/jpeg/png/gif 类型的图像。我们可以提供图像信息的字符串/字节,或者文件名/URL。

  • display_jpeg(): display_jpeg() 方法将使用名为 Image 的类创建的 jpeg/jpg 文件的图像对象作为输入,并在 notebook 中一个接一个地显示图像。
  • display_png(): display_png() 方法的工作方式与 display_jpeg() 方法类似,它将包含 png 文件信息的图像对象列表作为输入。

如何在 Jupyter Notebook 中显示“SVG 图像”?

名为 SVG 的类将在 Jupyter Notebook 中显示 SVG 图像。我们还可以提供本地系统上的图像文件名或网络 URL 来显示 SVG 图像。

  • display_svg(): display_svg() 方法将使用 SVG 类创建的 SVG 对象列表作为输入,并按顺序显示它们。

如何在 Jupyter Notebook 中显示“JSON”?

JSON 类将在 Jupyter Notebook 本身中以类似目录的结构显示 JSON 的内容,我们可以通过展开或移除带有节点的结构来找到它。输入是给该方法的 JSON 字典,它将以树状的交互式结构显示内容。该类将从本地文件和网络内的 URL 加载 JSON。

此功能仅适用于 Jupyter Lab,不适用于 Jupyter Notebook。

输出

IPython Display

输出

IPython Display

display_json()

display_json() 方法将使用 JSON 类创建的一组 json 对象作为输入,并逐一显示它们。

输出

IPython Display

如何在 Jupyter Notebook 中显示“Javascript”?

名为 Javascript 的类将在 Jupyter Notebook 中执行 javascript 代码。我们还可以提供 javascript 代码的文件名或 URL,它会执行它们。

我们还可以使用 javascript 中的 element 变量访问单元格输出的 HTML 元素。它还会根据我们的需要进行修改以显示 notebook 输出。

在下面,我们执行了一个简单的 javascript 代码,它将比较三个数字,并通过设置元素的 innerHTML 属性,将三个数字中最大的一个作为单元格的输出打印出来。

我们需要注意,此功能仅适用于 Jupyter Lab,在 Jupyter Notebook 中无效。

示例

输出

最大的数字是: 35

如何在 Jupyter Notebook 中显示“Markdown”?

名为 Markdown 的类将在 Jupyter Notebook 中显示内容。Jupyter Notebook 已经提供了 Markdown 单元格,我们可以在其中显示 Markdown,但是当我们在代码中从多个来源获取 Markdown 数据时,这个类会很有用。下面,我们用一个简单的例子来解释如何使用它。该类还会从本地文件或网络 URL 加载 Markdown。

示例

输出

IPython Display

display_markdown()

display_markdown() 方法将接受使用 Markdown 类创建的一组 Markdown 对象,并逐一显示它们。

如何在 Jupyter Notebook 中使用“LaTeX”显示数学公式?

LaTeX 的类将在 Jupyter Notebook 中显示 LaTeX,通常用于在 Jupyter Notebook 中表示数学公式。Jupyter Notebook 使用 MathJax JavaScript 在 Jupyter Notebook 中显示 LaTeX。我们还可以向该类提供字符串、文件名或网络上的 URL 形式的 LaTeX 数据。我们还用一个在 Jupyter Notebook 中显示公式的例子进行了解释,这将是许多科学项目的要求。

输出

IPython Display

display_latex()

display_latex() 方法将 LaTeX 对象列表作为输入,并单独显示每个 LaTeX 内容。

输出

IPython Display

如何在 Jupyter Notebook 中显示“Scribd 文档”?

名为 ScribdDocument 的类将在 Jupyter Notebook 中显示 Scribd 的 PDF 文件。我们必须提供 Scribd 上书籍的唯一 ID,它将在 Notebook 中显示一个文档,然后我们可以阅读。我们还可以指定显示书籍的框架的高度和宽度。它还可以通过使用 start_page 参数指定起始页码,以便从该页开始。