Jupyter notebook入门教程(上)

本文将分上下两部分简单介绍Jupyter notebook的入门教程,英文原文出处:

Getting started with the Jupyter notebook(part 1)

Jupyter notebook(又称IPython notebook)是一个交互式的笔记本,支持运行超过40种编程语言。本文中,我们将介绍Jupyter notebook的主要特点,了解为什么它能成为人们创造优美的可交互式文档和教育资源的一个强大工具。

在使用这个notebook之前,你需要先进行安装。你可以在Jupyter website上找到完整的安装步骤。

(译者注:推荐使用Anaconda,自带了Numpy、Scipy、Matplotlib等多种python开发包和Jupyter notebook)

安装完毕后,在Linux终端运行下列命令:

jupyter notebook

然后,你将看到类似下面显示的语句:

[I 20:06:36.367 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
[I 20:06:36.813 NotebookApp] Serving notebooks from local directory: /home/your_username
[I 20:06:36.813 NotebookApp] 0 active kernels
[I 20:06:36.813 NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[I 20:06:36.813 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

Jupyter的主窗口显示的路径一般是你启动notebook时位于的路径下(通常在你的用户目录下)。主界面如下所示:

若要创建一个新的notebook,只需鼠标左击New,在下拉选项中选择一个你想启动的notebook类型即可。

因为我只安装了Python内核,所以启动Python notebook来进行演示,打开新的标签,得到了一个空的notebook界面。

你可以看到notebook由以下部分组成:

  • notebook名字
  • 主工具栏,包括保存notebook、导出、重载、重启内核等
  • 快捷键
  • notebook主要部分,notebook编辑区

花时间熟悉菜单,了解其中的选项。如果你想了解一些特殊模块、notebook或者一些库,可以点击菜单栏右侧的Help按钮。

在主区域(编辑区),你可以看到一个个单元(cell)。每个notebook都由许多cell组成,每个cell有不同的功能。

首先,第一个cell如下图所示,以“In[ ]”开头表示这是一个代码单元。在代码单元里,你可以输入任何代码并执行。例如,键盘输入1+2,然后按“Shift+Enter”,代码将被运行,并显示结果。同时,切换到新的cell中。

绿色的轮廓线所在的cell,就是当前工作单元。接下来,我们在第二个cell中,敲击下列代码:

for i in range(5):
    print(i)

按“Shift+Enter”运行该单元,得到:

跟之前一样,代码被执行,结果也正确显示处理。但是你可能注意到这次没有Out[2],这是因为我们打印了结果,却没有返回值。

notebook一个非常有趣的特性是可以返回之前的cell,修改并重新运行,以此来跟新整个文档。例如,现在我们回到第一个cell中,将输入1+2改成2+3,重新按“Shift+Enter”运行该单元,结果被立即更新成5。当你想使用不同参数调试方程又不想运行整个脚本的时候,这条特性非常有用。然而,你也可以通过菜单栏Cell->Run all来重新运行整个notebook。

现在我们已经知道了如何输入代码,那为什么不尝试获得一个更加优美,解释性更强的notebook呢?这可以通过使用其他类型的cells来获得,例如Header和Markdown单元。

首先,我们在notebook的顶部添加一个标题。做法是,选择第一个cell,点击Insert->Insert cell above,则在这个cell上面会添加一个新的单元。但是这个新cell默认是code类型,我们可以通过cell type菜单选择Heading或Markdown替换之前的code类型,这样就可以添加标题了。

你可以选择Heading,然后弹出信息会告诉你如何创建不同级别的标题,这样你就有了与code不同类型的cell。

这个cell以#开头,表示一级标题。如果你想列子标题的话,参考下面的方法:

# : First level title
## : Second level title
### : Third level title
...

标题写在#后面,然后重新运行cell,你会发现该单元添加了标题,非常生动可读,示例如下:

添加标题之后,我们要对每个代码类型的cell做相应的解释。为此,我们在相应的位置添加cell,将其类型改为Markdown,然后重新运行cell,这样就能让解释文本丰富起来了。

最后,你可以将新建的notebook重命名,点击File->Rename,然后输入新的名称即可。这样更改后的名字就会出现在窗口的左上角,位于Jupyter图标的右侧。

在下一部分的教程中,我们将对notebook的能力以及如何集成其他Python库进行更深入的研究。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

PE 病毒与 msf 奇遇记

通俗的讲,PE 病毒就是感染 PE 文件的病毒,通过修改可执行文件的代码中程序入口地址,变为恶意代码的的入口,导致程序运行时执行恶意代码。

11900
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:单元测试

19260
来自专栏Java技术栈

非常有用的并发控制-循环栅栏CyclicBarrier

昨天我讲了倒计时器CountDownLatch的应用,它是阻塞线程直到计时器归0的一种等待方式。今天讲的这个循环栅栏CyclicBarrier与倒计时器非常类似...

408120
来自专栏信安之路

HCTF2017的三个WriteUp

解决方法就是先 undefine 掉函数,再右键选择 Code,最后 Create function 就可以正常反编译了。

12300
来自专栏我的技术专栏

Socket编程(4)TCP粘包问题及解决方案

13930
来自专栏猿人谷

Unix下c程序内存泄露检测工具

Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。 Valgrind的最初作者是Julian Seward,他于2006年由于在开发V...

23270
来自专栏阮一峰的网络日志

Github 的清点对象算法

使用 Github 的时候,你有没有见过下面的提示? $ git clone https://github.com/torvalds/linux Cloning...

35160
来自专栏iOS技术

YYCache 源码剖析:一览亮点

YYCache 作为当下 iOS 圈最流行的缓存框架,有着优越的性能和绝佳的设计。笔者花了些时间对其“解剖”了一番,发现了很多有意思的东西,所以写下本文分享一下...

52050
来自专栏進无尽的文章

关于-#pragma

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一...

25110
来自专栏技术翻译

将Elasticsearch直接连接到Java EE应用程序

时髦的大数据来自3 V:音量,种类和速度。卷是指数据的大小,品种是指不同类型的数据,而速度是指数据处理的速度。为了处理持久性大数据,NoSQL数据库可以更快地写...

17230

扫码关注云+社区

领取腾讯云代金券