查看Jupyter Notebook编程环境的源代码
←
Jupyter Notebook编程环境
跳转到:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== Jupyter Notebooks是什么 == [http://jupyter.org/ Jupyter] Notebook是一个Web应用程序,允许你把所有的说明性文字,数学公式,代码和可视化内容结合在一个可轻松共享的文档里。例如,这是我最近特别喜欢共享的Notebook之一,激光干涉[https://www.ligo.caltech.edu/news/ligo20160211 引力波观测站](LIGO)对从[https://losc.ligo.org/s/events/GW150914/GW150914_tutorial.html 两个碰撞黑洞发出引力波的检波实验的分析]。你可以下载数据,在Notebook上运行代码和重复分析,实际上你可以自己检测引力波。 在使用数据时,Notebooks很快成为了必不可少的工具,你会发现它们被用于[http://nbviewer.jupyter.org/github/jmsteinw/Notebooks/blob/master/IndeedJobs.ipynb 数据清理和探索],可视化,[http://nbviewer.jupyter.org/github/masinoa/machine_learning/blob/master/04_Neural_Networks.ipynb 机器学习]和[http://nbviewer.jupyter.org/github/tdhopper/rta-pyspark-presentation/blob/master/slides.ipynb 大数据分析]。这是一个我为自己的个人博客制作的[https://github.com/mcleonard/blog_posts/blob/master/body_fat_percentage.ipynb Notebook],展示了Notebook的许多特性。通常你会在一个终端做这项工作,无论是普通的Python shell还是IPython,您的可视化将在单独的窗口,任何文档以及各种脚本的功能和类将在单独的文档。但是用Notebook,所有的这些都在一个地方,很容易一起阅读。 Notebooks也在Github上自动呈现。这是一个伟大的功能,让你轻松的分享你的工作。也有[http://nbviewer.jupyter.org/ http://nbviewer.jupyter.org] 能够很好地展现你存在Github repo或别处的Notebook文档。 === 文艺编程(Literate programming) === Notebook是唐纳德·克努特(高德纳)在1984年提出的一种[http://www.literateprogramming.com/ 文艺编程]形式。有了文艺编程,我们就可以将文档编辑为一种叙述性的文字伴随着代码的形式,而不是单纯的代码。用唐纳德·克努特的话来说,与其说我们的主要任务是为了指导电脑做什么,还不如将我们的精力集中在给人类解释我们正在让电脑做什么。 毕竟,代码是为人类编写的,而不是电脑。Notebook就很好地提供了这种功能。你能够将编写文档作为叙事文本,以及代码。这不仅对人们阅读你的Notebook有帮助,而且对未来的你想回头做一些分析也很有用。还有:最近,这个文艺编程的想法已经扩展到一种整体编程语言:[http://www.witheve.com/ Eve]。 === Notebook如何工作 === Jupyter notebooks 是由Fernando Perez开发,在IPython基础上形成的项目。[https://ipython.org/ IPython]是一个python交互环境,类似于Python自带的交互环境,却具有极棒的例如语法高亮和代码自动完成等特性。起初,notebook通过从Web应用程序发送消息(在浏览器中查看notebook)到IPython内核(在后台运行的IPython应用)。内核执行代码,然后把它送回notebook。当前的体系结构是类似的,如下所示。 [[File:未标题-1.png|400px]] 关键点在于notebook的服务器。你通过你的浏览器以及notebook链接到服务器使其作为一个web应用程序来呈现。你在web应用程序中编写的代码通过服务器发送到内核。内核运行代码并将其发送回服务器,然后任何输出都会呈现的浏览器上。当你保存notebook的时候,它将会以JSON文件以及.ipynb的文件扩展名来写入服务器。 这个架构的优点在于内核不需要运行Python。由于notebook和内核是分开的,任何形式的代码都可以在它们之间传送。例如,两个早期版本的非Python的内核就是为R和Julia语言设计的。在R内核中,用R语言编写的代码将会被送到R内核执行,等同于Python代码在Python内核里运行。因为notebooks的含义并不是很清楚,所以人们将早期的Ipython notebooks重新命名了。新名称Jupyter来自于与Julia,Python和R的结合。如果你感兴趣,这里有一个可用内核的表。 另一个好处是服务器可以通过互联网在任何地方运行和访问。通常,你将会在储存了所有数据和notebook文件的自己的机器上来运行服务器。但是,你也可以设置一个远程机器或者一个像Amazon’s EC2的云实例。然后,你可以在世界任何地方访问你浏览器中的notebooks。 == 安装Jupyter Notebook == 目前安装Jupyter最简便的方式是使用Anaconda,其自带了Jupyter notebooks工具包,用户可以在默认环境下使用notebooks。 要在conda环境中安装Jupyter notebooks,请使用conda install jupyter notebook。同样可以通过pip命令完成Jupyter notebooks的安装:pip install jupyter notebook。 要启动notebook服务器,请在终端或控制台中输入jupyter notebook,随后将在您运行命令的目录中启动服务器,这意味着任何notebook文件都会储存在这个目录下。通常情况下,您希望在notebooks的目录下启动服务器。您可以通过文件系统浏览到notebook所在的位置。 == 启动notebook服务器 == 当您运行那个命令(自己尝试!),服务器主页将在您的浏览器中打开。 [[File:notebook-server.png|600px]] 默认情况下,notebook服务器运行在http://localhost:8888端口。 如果您对此不熟悉,localhost意味着您的计算机,8888是服务器正在通信的端口。 只要服务器仍在运行,您随时可以返回,只要你在浏览器中访问http://localhost:8888即可。 如果您需要启动另外一个服务器,它会先尝试使用端口8888。由于端口已经被占用,新的服务器将在端口8889上运行。然后,您会连接到http://localhost:8889。每新增一个notebook服务器都会使得这个端口号递增1: 您可在此处的列表中看到一些文件和文件夹,这取决于您从哪里启动服务器。在右侧,您可以单击“新建”创建新的notebook、文本文件、文件夹或终端。 “Notebooks”下的列表显示您已安装的内核。 [[File:conda-environments.png|200px]] 这里我在Python 3环境中运行服务器,所以我有一个Python 3内核可用。 您可在这里看到Python 2。 我还为列表中的Scala 2.10和2.11安装了内核。 如果从conda环境运行Jupyter notebook服务器,您还可以从其他任何环境中选择内核(见下文)。 要创建新的notebook,请单击要使用的内核。 顶部导航有文件,执行和集群的选项。点击文件将显示当前目录下的所有的文件夹及文件。 点击running将列出所有正在执行的脚本并可以进行管理操作。 群组原本的作用是显示已创建的用于并行计算的多CPU核,现在由于已被ipyoaraller代所以并没有什么用处。 如果你从conda环境运行脚本服务器,将可以看到一个“Conda”按钮。用此按钮你可以从Jupyter里面管理环境。你可以创建新环境,安装包,升级包和导出环境等。 [[File:conda-tab.png|600px]] == 关闭Jupyter == 要关闭单个脚本,你可以在服务器主页处勾选对应脚本然后点击关闭。 请在关闭前确保已经保存!因为关闭后,你的所有修改都将会丢失。下一次你执行脚本时仍然需要重新运行代码。 [[File:notebook-shutdown.png|600px]] 你也可以在终端按两次“control + C”来关闭整个服务器,再次强调在作出关闭动作前请保证做好保存,因为该动作会立即关闭所有的在运行的脚本。 [[File:server-shutdown.png|500px]] == Notebook 操作界面 == 用 notebook新建一个笔记,你将会看见下面的界面: [[File:操作界面notebook.jpg|600px]] notebook以cell格子的形式存储和展示各种信息,包括代码。分为一下几种: 代码格:你在这里编辑和运行的你的代码。 Markdown文本格:以 Markdown 规则显示的文本内容。可以方便的编辑标题和字体格式、插入图片等等。 其他操作: 在文件最顶端你可以看见文档的标题,默认值是“Untitled”。点击标题可以进行重命名。 [[File:QQ截图20170226203001.png|15px]]重启内核,之前的变量将会丢失。 notebooks每间隔一段时间会自动保存当前编辑的内容。你也可以手动保存文档。 在"File" 菜单, 你可以下载你编辑的文档。你可以下载HTML/py/pdf等不同的格式。 == code代码格 == 你在notebooks里的工作大部分将会通过代码格来实现。这里是写代码和执行代码的地方。 在代码格,你可以写入任何代码:定义变量,定义函数和类,或者载入其他代码包等等。 任何一个代码格中的代码,都可以引用到其他格子中的代码。 == MarkDown文本格 == 就像代码格一样,你按下 Shift + 回车 或者 Control + Enter 就可以运行Markdown文本格,他们会以Mardown语法渲染文本。 Markdown语法主要分为以下几种: === Headers头部 === 每一行的开始用#表示标题的层级。一个#是1级标题,两个#是2级标题,以此类推。 # Header 1 ## Header 2 ### Header 3 === Links 超链接 === 超链接适用如下格式: [Udacity's home page](https://www.udacity.com) 中括号内是超链接显示文字,小括号内输入超链接地址即可。 === Emphasis重点 === 加粗的文本可以用2个星号(*)或下划线(_)把文本夹在中间。 例如 **aardvark** 或者 __aardvark__ 将会显示成 '''aardvark''' 。 === Code代码 === 有两种方式用于显示代码。 用 符号 ` 包含文本,例如`string.punctuation` 如果是多行代码,则用3个符号`来包含文本。例如: ``` import requests response = requests.get('https://www.udacity.com') ``` 另一种方式是在代码前面加入4个空格,使代码产生缩进。 === Math expressions 数学表达式 === 你可以在 Markdown文本格使用 [https://www.latex-project.org/ LaTeX] 符号创建数学表达式。Notebooks 使用 MathJax 把 LaTeX 符号渲染成数学表达式。 在一行内可以使用符号$包含表达式,例如 $y = mx + b$ 多行的数学表达可以用2个符号$包含多个表达式,例如: $$ y = \frac{a}{b+c} $$ === 示例 === [https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet 该链接是一个包含Markdown所有格式的示例。] == Magic keywords 快捷命令 == 快捷命令是在格子中运行的控制notebook本身或系统的特定代码。例如你可以使用 '''%matplotlib''' 这个命令,在单元格内嵌入matplotlib显示结果. === Timing code 时间代码 === 你可以使用 '''timeit''' 这个命令显示一个函数的运行时间。如下图: [[File:5107d13d-ebbb-4cce-bd.png|600px]] 你可以使用 '''%%timeit''' 这个命令显示整个代码格的运行时间。如下图: [[File:222.png|600px]] === Embedding visualizations in notebooks 可视化嵌入 === 在 %config InlineBackend.figure_format = 'retina' 代码之后写入 %matplotlib inline to render higher resolution images. 可以在格子中显示: [[File:333.png|600px]] === debug === 你可以使用 '''%pdb''' 命令交互的调用debugger。 [[File:Debugging in a notebook.png|600px]] === 有用的快捷键=== * Esc + F 在代码中查找、替换,忽略输出。 * Esc + O 在cell和输出结果间切换。 * 选择多个cell: : Shift + J 或 Shift + Down 选择下一个cell。 : Shift + K 或 Shift + Up 选择上一个cell。 : 一旦选定cell,可以批量删除/拷贝/剪切/粘贴/运行。当你需要移动notebook的一部分时这个很有用。 *Shift + M 合并cell. == Converting notebooks == Notebooks 是一个庞大的扩展名为 .ipynb的 JSON 文件。 [[File:11111.png|600px]] 如果对嵌入式的显示方法不满,可以利用nbconvert工具将 .ipynb 文件转换成 html 或 Markdown 格式,再放入网页中。 例如你可以把 notebook 转换成 HTML 文件,使用下面的命令: jupyter nbconvert --to html notebook.ipynb [[File:2322.png|600px]] == 创建幻灯片 == 在菜单栏,点击 View > Cell Toolbar > Slideshow ,给格子增加'''幻灯片'''类型。 [[File:33233.png|600px]] 之后,你就可以在格子类型里选择'''幻灯片'''类型了。 [[File:344433.png|600px]] === 运行幻灯片 === 要在notebook创建幻灯片文件,你需要使用 nbconvert: jupyter nbconvert notebook.ipynb --to slides 希望转换后立刻看见结果,使用: jupyter nbconvert notebook.ipynb --to slides --post serve
返回到
Jupyter Notebook编程环境
。
个人工具
创建账户
登录
名字空间
页面
讨论
不转换
变换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
查看
阅读
查看源代码
查看历史
操作
搜索
导航
集智百科
集智主页
最近更改
所有页面
帮助
工具箱
链入页面
相关更改
特殊页面