jupyter notebook是一个基于网页的交互式计算环境,它本身支持多种语言的开发,但常用于Python的开发。其优点是交互式强,易于可视化,尤其适用于需要频繁修改、实验的场景,比如数据分析、测试机器学习模型等。另一个优点是它是基于Web的,客户端运行于浏览器,而真正的Python环境(kernel)则运行于服务器。因此可以把计算引擎部署在计算力强大的后台服务器甚至是GPU服务器上,这对于很多深度学习的计算环境是很方便的。
jupyter notebook产品的官方主页为https://jupyter.org/。
安装与启动
anaconda 如果安装了anaconda的python发行版,那么jupyter notebook就已经自带了。只需要从anaconda navigator中启动即可,如下图所示。
官方python 如果安装的是Python官方发行版,则需要自行安装jupyter notebook。安装过程可能会有点慢,因此它需要安装比较多的相关软件包。
pip install notebook
安装完成后,只需要敲入jupyter-notebook命令即可启动。
jupyter-notebook[I 15:16:27.520 NotebookApp] Serving notebooks from local directory: /Users/gran/work_macpro/study/python/jupyter_notebook
[I 15:16:27.520 NotebookApp] Jupyter Notebook 6.1.6 is running at:
[I 15:16:27.520 NotebookApp] http://localhost:8888/?token=4f1c60188b984ab261fa033d936007d2e49b36b6b3c01261
[I 15:16:27.520 NotebookApp]or http://127.0.0.1:8888/?token=4f1c60188b984ab261fa033d936007d2e49b36b6b3c01261
[I 15:16:27.520 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 15:16:27.528 NotebookApp]
不论是从anaconda启动,还是手动安装后通过命令行启动,jupyter notebook都会在后台启动一个web服务器,默认端口为8888。在浏览器中访问http://localhost:8888即可使用jupyter notebook。如下图所示。
文章图片
使用详解 基本界面 从浏览其打开jupyter notebook后,主界面的Files标签里是一个文件浏览器。可以本机工作目录里的文件,如果是jupyter notebook文档可以直接打开;当然也可以在这里新建或者上传一个文档,如下图所示。
文章图片
选择新建一个python 3文档,则进入notebook文档界面,可以敲入python代码,并修改文档名称。如下图所示。
文章图片
修改并保存文档后,再回到主界面,可以看到在Files标签里面多了一个hello_world.ipynb文件;而在Running标签则多了一个运行中的文档。
文章图片
文章图片
每当新建或者打开一个notebook文档,在主界面Running里面都会有一项对应的记录。在文档界面里面,这后台对应的运行引擎称为kernel。
以上就是jupyter notebook的主要界面,很简单。下面重点介绍文档界面的操作。
文档操作 文档界面又一个菜单栏和工具栏,同时还支持快捷键。实际应用中,推荐使用快捷键。文档界面的菜单里有两个新术语cell(单元)和kernel(内核)。
cell的编辑模式与命令模式
cell是一个jupyter notebook文档的基本组成单位,一个文档可以有一个或者多个cell。前面的截图中输入的hello world代码地方就是一个cell。cell有两种模式,编辑模式和命令模式。处于编辑模式时,cell中有光标闪烁,并且菜单栏右侧有编辑图标。快捷键esc可从编辑模式变为命令模式;在命令模式下按下enter则切回编辑模式。
文章图片
文章图片
cell类型
cell的类型有代码、Markdown和原始文档几种。混合使用代码cell和Markdown,可以形成一个很好的笔记文档。比如用Markdown来描述设计、算法和代码,其表达能力比Python自带的注释更丰富。在命令模式下,可以用快捷键改变一个cell的类型:
- 快捷键y将一个cell类型变为代码cell
- 快捷键m将一个cell类型变为Markdown
文章图片
cell的输入与输出
对于代码cell,有输入和输出区域。输入区域就是输入源代码的,而输出区域则是代码的执行结果。要查看一个代码cell的输出结果,只需按下快捷键control+enter(???)。可以反复修改cell,修改后再次运行该cell则其输出也会根据最新的代码而变化。
万能的p命令 在命令模式下,如果按下键盘上的p键,则会弹出所有快捷操作的列表。因此,如果你记不住某个操作快捷键,那么就是用p命令吧!
文章图片
总结一下,cell操作的快捷键盘(以mac book的键盘为例)。如果用过vi编辑器的话, 很多编辑快捷操作都似曾相识。
cell操作 | 快捷键 |
编辑模式切换到命令模式 | esc |
命令模式切换到编辑模式 | enter |
快捷操作列表 | p(命令模式) |
cell类型改为代码 | y(命令模式) |
cell类型改为Markdown | m(命令模式) |
删除cell | dd(命令模式) |
复制cell | c(命令模式) |
在上方插入一个新的cell | a(命令模式) |
在下方插入一个新的cell | b(命令模式) |
在下方粘贴cell | v(命令模式) |
在上方粘贴cell | shift v(?v) |
运行cell | control enter(???)(编辑模式,命令模式) |
运行cell并选中下一个cell | shift enter(???)(编辑模式,命令模式) |
运行cell并在下方插入一个新的cell | oprion enter(???)(编辑模式,命令模式) |
文章图片
还可以通过help()来启动交互式帮助控制台。
文章图片
shell命令 在代码单元中,可以执行shell命令。shell命令以!开头,如下所示。
文章图片
magic命令 jupyter notebook的代码单元还支持一种以%开头的称为magic的命令。这些命令包括一些内嵌的工具,如测量时间的%timeit,还有一些shell的功能,如%cat等。同样,可以在magic命令后面加?来显示使用帮助。下面是两个示例。
文章图片
文章图片
完整的magic命令可通过执行%magic命令来查看。
文章图片
【计算机技术|Python开发之jupyter notebook使用详解】
内核操作 内核操作可从文档界面的kernel菜单进入。
文章图片
每个jupyter notebook文档在后台都有对应的运行环境,即一个内核。内核主要操作包括重启和关闭。每运行一个cell,内核里都有记录,会保存其状态;再运行很多cell后,或者经过多次修改后,之前运行的一些变量的结果可能不再适用,这种情况下可能就需要重启内核。重启后,所有的变量和状态都被清除,相当于一个cell都没运行的状态。如果想要重启后再运行所有cell,则执行"Restart & Run All",如果想要重启并清除输出结果,则执行"Restart & Clear Output"。
jupyter notebook里的cell并不一定要按照顺序执行,可以跳转到任何cell执行。内核有一个计数器,会标记每个执行过的cell顺序。比如下面的例子中,共有两个cell。先把所有的cell都运行一遍,然后修改第一个cell中的代码后,再跳转到第一个cell运行,第一个cell的输出结果更新了,同时第一个cell的执行顺序也变成了3。如下图所示。
文章图片
文章图片
正式这种小范围内随时修改、随时执行出结果的特性,是的jupyter notebook非常适用于边实验边写代码的开发。尤其是数据分析、机器学习模型的开发,往往需要反复实验、反复调参,因此jupyter notebook就很适合前期的开发。
安装kernel jupyter notebook可以支持多种后台引擎(kernel),从而可以支持不同的开发语言。以bash为例,可以安装bash kernel。命令如下:
pip install bash_kernel
python3 -m bash_kernel.install --sys-prefix
Installing IPython kernel spec
带上--sys-prefix的作用是将kernel安装到虚拟环境(venv)中。
然后用jupyter kernelspec命令可以查看系统中的kernel。
jupyter kernelspec list
再启动jupyter-notebook,就可以创建bash脚本,并连接到bash kernel运行。
文章图片
jupyter notebook可以支持的kernel有很多,流行的开发语言,比如JavaScript,TypeScript,go,Lua,C++等等都支持。详细列表可参见其WiKi页面https://github.com/jupyter/jupyter/wiki/Jupyter-kernels。
对于数据科学领域,一个典型的应用是安装多个版本的Python kernel,比如Python 2.7和Python 3.x。这样可以在多个环境验证Python应用。不过这在conda环境操作起来更为方便。
nbviewer与笔记共享 使用jupyter notebook记录的笔记文件.ipynb可以通过nbviewer来渲染从而得到带输出结果的完整笔记。jupyter的wiki上列举了很多共享的jupyter笔记,详细可参见https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks。
如果你自己生成了一个jupyter notebook的笔记,也可以到nbviewer的网站https://nbviewer.jupyter.org/去查看。只需要输入笔记文件的URL,nbviewer就会渲染输出图文并茂的完整笔记。
jupyter lab jupyter lab则是jupyter notebook的改进升级版,被称为下一代的jupyter notebook。它的集成化更高,使用起来更像一个IDE,其启动界面如下图所示。不过实际使用起来跟jupyter notebook差不多。因此学会jupyter notebook也很容易使用jupyter lab。
文章图片
推荐阅读
- 笔记本电脑评测网站 notebookcheck
- Python__Django3.2框架
- Python之读写Excel
- 面试|Java:垃圾回收机制面试题整理
- python学习|6.2.3 python二分查找算法及LeetCode题目(3)之二维数组 —— Search a 2D Matrix
- Python 3的教程
- 大数据|权威发布|恭喜 Apache Doris PPMC 陈明雨入选 2021 中国开源先锋 33 人之心尖上的开源人物...
- devops|国内首届DataOps+MLOps meetup回顾
- IT尖端技术|基于高端全闪存存储在医院中的应用与探索