文档章节

IPython Notebook 简介

lionets
 lionets
发布于 2014/06/06 11:08
字数 2021
阅读 25840
收藏 14

在 IPython 的官网(ipython.org)上,介绍其的第一句话便是:IPython 是一个加强版的交互式 Shell。另外很多介绍 IPython 的文章也常以这句话开头,但这句话实在是等于没说。让 IPython 在各种 shell(IDE) 中脱颖而出,成为科学计算标配的,并不是按 Tab 键代码补完、以 % 开头的魔术命令这些大家都有的东西,而是与 matplotlib 这个数据可视化(绘图)包的深度集成以及奇妙的 Notebook。

IPython 较早的富 GUI 实现应该是 Qt Console。过去在标准 shell 里绘图时,弹出的绘图窗口会接管 shell 会话的控制权,你想继续输入命令就必须先把绘图窗口关掉。这对于希望同时实现可视化和交互式过程的数据分析用户来说显然是难以忍受的,因此 Qt console 站出来解决了这个问题。在 Qt console 中通过 matplotlib 绘制的图形会独立嵌于控制台中,并不影响你继续输入命令。

2011年,由 Brian Granger 领导的 IPython 团队开始开发一种基于Web技术的交互式计算文档格式,即 IPython Notebook。为什么说它是文档格式,而非计算工具呢?实际上它两者都是。Notebook 在交互上使用了 C/S 结构,它通过 Tornado 建立一个 shell 服务器,并使用浏览器作为客户端。另外 notebook 页面都被保存为 .ipynb 的类 JSON 文件格式。这种文件格式也是 Notebook 最吸引人的地方。

IPython Notebook 更详细的介绍在下面第二节中给出,第一节讲的是一些对 IPython 的各种实现通用的功能。 <br /> #基础

###Tab 键自动完成 和其他 IDE 差不多,自己多试试就好了 <br /> ###内省 在变量名或命令的前面或后面加一个 “?” 并执行,可以用于显示该对象的一些通用信息,如对象类型、文档字符串等,这就叫做对象内省。这种操作查看到的信息,尤其是函数和类的信息,比通常直接引用变量名然后回车所看到的(__repr__)要好。“?” 的另一个用法是可以搜索 IPython 的命名空间,配合通配符使用效果如下:

lang:python
In [1]:import numpy as np
In [2]:np.*load*?
np.load
np.loads
np.loadtxt
np.pkgload

使用双问号“??”还可以查看对象的源代码(如果可见的话)。 <br /> ###魔术命令 在 IPython 的会话环境中,所有文件都可以通过 %run 命令来当做脚本执行,并且文件中的变量也会随即导入当前命名空间。即,对于一个模块文件,你对他使用 %run 命令的效果和 from module import * 相同,除非这个模块文件定义了 main 函数(if __name__ == '__main__:'),这种情况下 main 函数还会被执行。

这种以 % 开头的命令在 IPython 中被称为魔术命令,用于加强 shell 的功能。常用的魔术命令有: <br />

<table> <tr> <td>%quickref</td> <td>显示 IPython 快速参考</td> </tr> <tr> <td>%magic</td> <td>显示所有魔术命令的详细文档</td> </tr> <tr> <td>%debug</td> <td>从最新的异常跟踪的底部进入交互式调试器</td> </tr> <tr> <td>%pdb</td> <td>在异常发生后自动进入调试器</td> </tr> <tr> <td>%reset</td> <td>删除 interactive 命名空间中的全部变量</td> </tr> <tr> <td>%run <i>script.py</i></td> <td>执行 <i>script.py</i></td> </tr> <tr> <td>%prun <i>statement</i></td> <td>通过 cProfile 执行对 <i>statement</i> 的逐行性能分析</td> </tr> <tr> <td>%time <i>statement</i></td> <td>测试 <i>statement</i> 的执行时间</td> </tr> <tr> <td>%timeit <i>statement</i></td> <td>多次测试 <i>statement</i> 的执行时间并计算平均值</td> </tr> <tr> <td>%who、%who_ls、%whos</td> <td>显示 interactive 命名空间中定义的变量,信息级别/冗余度可变</td> </tr> <tr> <td>%xdel <i>variable</i></td> <td>删除 <i>variable</i>,并尝试清除其在 IPython 中的对象上的一切引用</td> </tr> <tr> <td>!<i>cmd</i></td> <td>在系统 shell 执行 <i>cmd</i></td> </tr> <tr> <td>output=!<i>cmd args</i></td> <td>执行<i>cmd</i> 并赋值</td> </tr> <tr> <td>%bookmark</td> <td>使用 IPython 的目录书签系统</td> </tr> <tr> <td>%cd <i>direcrory</i></td> <td>切换工作目录</td> </tr> <tr> <td>%pwd</td> <td>返回当前工作目录(字符串形式)</td> </tr> <tr> <td>%env</td> <td>返回当前系统变量(以字典形式)</td> </tr> </table> <br /> 对魔术命令不熟悉的话可以通过 `%magic` 查看详细文档;对某一个命令不熟悉的话,可以通过 `%cmd?` 内省机制查看特定文档。值得一提的是,IPython 中使用 `del` 命令无法删除所有的变量引用,因此垃圾回收机制也无法启用,所以有些时候你会需要使用 `%xdel` 或者 `%reset`。 <br /> ###历史输入和输出变量 与标准 Shell 类似,IPython 中也可以通过 `_` 和 `__` 访问上一次和上上一次的输出。同时你肯定注意到了,IPython 中每一次的输入输出都有序号。访问历史 X 行输出的方法为:`_X`;访问历史 X 行输入的方法为:`_iX`。因为访问历史输出的使用概率较历史输入大很多,所以访问历史输出仅使用下划线加行号即可,同时为了区分,访问历史输入时需添加小写字母 “i”,代表 “in”。

lang:Python
In [24]:1+1
Out[24]:2

In [25]:_i24
Out[25]:'1+1'

In [26]:_24
Out[26]:2

<br /> #Notebook --- Notebook 的官方信息可以从 ipython.org/notebook 获得,不过好像被墙了。上不去的话也可以访问它的 github 页面,ipython/examples/Notebook 目录下有很多可供参考的内容。前面说过 Notebook 有一种 .ipynb 的文件格式,当你打开这个例程目录下的某个文件后,就能体会到 Notebook 的奇妙之处了。 <br /> ###演示文档 目前在各种 Python 研讨会上,一种流行的演示手段就是使用 IPython Notebook,然后再将 .ipynb 文件发布到网上以供所有人查阅。除了前面说过的可以内嵌 matplotlib 绘图外,Notebook 还同时提供了对 LaTex 和 MarkDown 的支持!

在此输入图片描述

如上图便展示了一个 .ipynb 文件的示例页面。其中一对 In Out 会话被视作一个单元,称为 cell。第一个 cell 里我写入的内容其实是:

##LaTex 演示
---
$Z=\frac{X-\bar{X}}{S}$

分别使用了 MarkDown 和 LaTex 的语法。按下 Shift + Enter 后这段内容就被渲染成了图片中的样子。

cell 特别亲切的地方在于:它可以作为一个类似“段落”的概念来进行编辑,不管是执行前还是执行后,而且既可以针对内容进行编辑,也可以对 cell 整体应用 copy、paste、cut 等操作,甚至还可以前后移动 cell 的位置。这带来的好处是,在大量试验性的交互操作过后,他不会像普通 shell 那样留下无数没用的 IO 内容。如果某条命令的输出不理想或者报了错,你就可以回头编辑后重新运行,或把它移位或干脆删掉。这样在很久的一段交互过程后,Notebook 留下的反而是一份干净整洁的文档。

.ipynb 文件使用的是一种类 JSON 的文本格式,就像这样:

"worksheets": [
	{
		"cells": [
			{
				"cell_type": "markdown",
				"metadata": {},
				"source": [
					"##LaTex \u6f14\u793a\n",
					"---\n",
					"$Z=\\frac{X-\\bar{X}}{S}$"
				]
			},

这种交互式计算环境,对绘图、数学公式、简易排版语法的支持,还有一种方便的文档格式,共同帮助 Notebook 成为了 Python 科学计算的理想工具。另外这种使用浏览器和服务进程的 C/S 结构还暗含了一种远程连接可能,抛开安全性不谈的话,其在教学方面也有很高的潜力。 <br /> ###操作指南 当通过 IPython Notebook.exe 进入应用时,首先打开的是 Home 页面,地址一般为:http://127.0.0.1:8888/tree。Home 目录下会列出所有的历史文件记录,右上角则有一个 “New Notebook” 按钮可以新建一个会话。

在 .ipynb 文件的交互页面,需要注意的除了标准的 IPython 语法外,就是页面抬头处的菜单栏和工具栏了。Notebook 很贴心地提供了非常友好的帮助页面,因此本文不再赘述。基本看完这两个页面(内容很少)后就能对 Notebook 的操作方式了解的差不多。

在此输入图片描述

© 著作权归作者所有

lionets
粉丝 94
博文 101
码字总数 135303
作品 0
朝阳
程序员
私信 提问
配置Ipython Nodebook 运行 Python Spark 程序

配置Ipython Nodebook 运行 Python Spark 程序 1.1、安装Anaconda Anaconda的官网是https://www.anaconda.com,下载对应的版本; 1.1.1、下载Anaconda 1.1.2、安装Anaconda 1.1.3、配置Anaco...

巴利奇
2018/10/30
0
0
IPython 4.0 发布,Python 命令行式交互

IPython 4.0 发布,这是 IPython 分离成 Ipython 和 Jupyter 的第一个重要版本。 在 4 月份的时候,IPython 分离成了两个项目 IPython 和 Jupyter,Jupyter 和 IPython 的代码是一样的,同样...

oschina
2015/08/13
11.7K
13
新功能:日志服务IPython/Jupyter Notebook扩展发布

背景 IPython/Jupyter很流行 Jupyter的前身是IPython Notebook,而IPython Notebook的前身是IPython。如下可以看到起发展轨迹: IPython/Jupyter非常流行,从三个方面可以看到: 数据科学领域...

成喆
02/11
0
0
python机器学习及实践学习笔记1-如何打开ipynb后缀文件

python机器学习及实践学习笔记1-如何打开ipynb后缀文件 2017年02月22日 14:58:08 hustzhoutian 阅读数:45365更多 个人分类: 深度学习 需要安装ipython notebook,如果你已经安装Anaconda软...

linjin200
2018/12/10
0
0
对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心

Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。 最近刚刚写过我为什么觉得觉得 Jupyter 项目(特别是 JupyterLab)提供了一种 魔法般的 Python 开发体验。在研究这...

作者: Matthew Broberg
07/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

我对算卦的认识

现在越来越认识到算卦其实就是帮自己尽快的做一个决定。 有一次看锵锵三人行,有一期一个嘉宾讲了他去算卦的事情。当时他有两个选择,一个是从商,一个是当演员。算卦的结果是当演员,他就放...

我是菜鸟我骄傲
20分钟前
2
0
获取小程序链接

https://zhidao.baidu.com/question/494453810708570772.html

Js_Mei
23分钟前
0
0
AIOps落地的前提条件探索

笔者根据自身的技术和行业理解,探索分析AIOps在企业落地的前提条件。 涉及关键字:自动化运维、AIOps、技术运营PaaS、蓝鲸等。 作者:张敏 AIOps概念 Gartner在2016年时便提出了AIOps的概念...

嘉为科技
33分钟前
0
0
Cookie起源与发展

上一篇我们在讲优酷弹幕爬虫的时候,引入了一个新的知识点:Cookie,由于篇幅有限当时只是简单的给大家介绍了一下它的作用,今天我们就来全面了解一下Cookie(小饼干)以及相关的知识! 相信...

猪哥66
35分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部