文档章节

IPython Notebook 简介

lionets
 lionets
发布于 2014/06/06 11:08
字数 2021
阅读 25486
收藏 14
点赞 4
评论 0

在 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
粉丝 90
博文 96
码字总数 131014
作品 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...

巴利奇
06/25
0
0
ipython和Jupyter Notebook

ipython ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数。学习ipython将会让我们以一种...

lvyz0207
05/24
0
0
docker安装anaconda数据分析

目录 docker 安装docker mac:下载安装包 centos: ubuntu: docker运行容器 docker容器转镜像 以下操作是在容器内进行 安装anaconda 提示输入 yes 最后 安装完成 更新anaconda 安装包 安装jup...

u011552182
04/23
0
0
Win 10基于Python 3.6安装IPython Notebook

本文介绍基于Python 3.6安装IPython Notebook的过程。 若要了解基于Python 2.7安装IPython Notebook的过程,请参考 Win 10基于Python 2.7安装IPython Notebook 1 安装Python 3.6 请参考 Win ...

海天一树X
05/03
0
0
在emacs中使用Emacs IPython Notebook

唯一的问题就是el-get安装的ein不能用,显示parse-error,卸载之使用package安装 在ubuntu中安装ipython和ipython-notebook,启动notebook M-x ein:notebooklist-open...

兰穆达
2015/03/31
0
0
uliweb在notebook中显示graphviz的svg图时,显示中文乱码的处理

这几天基本完成了在IPython notebook中显示Model关系图的功能,在MAC下工作良好,但是到了windows下,中文字段描述为乱码,主要原因是因为字体造成的。那么如何解决这个问题。在uliweb中,有...

limodou
2015/01/25
0
0
轻松搞定你的IPython + Notebook 基于云的科学计算环境(含详细步骤)

IPython + Notebook 提供了一种基于云的科学计算开发环境。它既能够使开发者享受到云计算的强大计算能力,也能够使开发者无需在自己本地安装任何软件就能有良好的开发界面。此外,从本地到云...

lindylin
2015/03/06
0
3
在ipython notebook中调用ggplot的三种不同的方法

在大数据时代,数据可视化是一个非常热门的话题。各个BI的厂商无不在数据可视化领域里投入大量的精力。Tableau凭借其强大的数据可视化的功能成为硅谷炙手可热的上市公司。Tableau的数据可视化...

naughty
2014/07/03
0
2
jupyter notebook :一个交互式计算和开发环境

一、 IPython基础 代码自动补全:Tab键 可补全内容包括:变量名、函数名、成员变量函数、目录文件 内省(Itrospection) 在变量名之前或之后加上问号(),这样可以显示这个对象的相关信息。 如果...

xinet
2017/08/15
0
0
Uliweb增加在IPython notebook中显示Model的关系图功能

Uliweb现在已经可以支持IPython notebook,首先安装好IPython notebook,如: 然后在某个项目下执行: 则自动打开流览器窗口。目前已经支持了Model和记录实例的展示功能。 使用前先要安装gra...

limodou
2015/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RESTful API 设计规范

关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止; 应该 (S...

niithub
4分钟前
0
0
Spring Cloud云服务架构 - common-service 项目过程构建

我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习。 首先在构建spring cloud的common-service之前,我们需要准备的技术: Maven(项目构建)...

itcloud
5分钟前
0
0
oracle 如何查看日志?

Oracle日志查看一.Oracle日志的路径:登录:sqlplus "/as sysdba"查看路径:SQL> select * from v$logfile;SQL> select * from v$logfile;(#日志文件路径)二.Oracle日...

youfen
6分钟前
0
0
sap netweaver developer studio安装svn插件

问题 我现在在Sap的IDE(netweaver developer studio)上面安装svn插件。 步骤 确定IDE使用的eclipse版本 Help→About SAP NetWeaver Developer Studio→Installation Details→Features→F...

亚林瓜子
12分钟前
0
0
大数据开发学习的内容介绍,成都大数据培训机构哪里好?

大数据开发培训已经成为了越来越多人的选择,大数据开发工程师也是各公司争相争夺的金领人才之一了,在当今科技发展非常迅速的社会里,越来越多人把职业规划投向了大数据开发。这里为大家整理...

加米谷大数据
17分钟前
2
0
函数

函数 函数是Python中最主要也是最重要的代码组织和复用手段。作为最重要的原则,如果你要重复使用相同或非常类似的代码,就需要写一个函数。通过给函数起一个名字,还可以提高代码的可读性。...

火力全開
19分钟前
0
0
gulp-webserverf启动服务,局域网无法访问

如题,gulp-server启动的服务,只能本机访问,局域网通过ip无法访问; 启动的其它项目,均可以访问成功; 网上资源,很多说什么防火墙之类的问题,都无果; 只需要给启动服务添加参数即可, ...

littleFaye
21分钟前
0
0
RabbitMQ实战:5种模式和示例

应用RabbitMQ的5种队列 一、简单队列 P:消息的生产者 C:消息的消费者 红色:队列 生产者实现思路: 创建连接工厂ConnectionFactory,设置服务地址127.0.0.1,端口号5672,设置用户名、密码...

spinachgit
22分钟前
0
0
mysql常见报错标号对应原因以及处理方法

mysql常见报错标号以及对应解决方法 报错标号 报错现象 解决方法 原因 1449 Cause: java.sql.SQLException: The user specified as a definer ('authplat_dev'@'%') does not exist 在控制台...

ChinaHYF
24分钟前
0
0
Java 监控系统技术选型

(1)操作系统监控 Sigar oshi (2)Tomcat监控 JMX 日志 (3)Oracle监控 日志 直连SQL查询 基于Druid连接池 (4)拓扑图 jtopo http://www.jtopo.com/demo/statictis.html...

cccyb
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部