IPython

前言

Life is short, you need Python

最近开始学习数据挖掘,需要使用到Python,其实大学时代就有接触过Python,但是却始终没有系统的进行学习过。

正好最近有接触简书,非常认同其中的一个观点:

以输出为导向的学习才是最有效的学习

所以我决定每天抽出一点时间进行三件事情:

  1. 学习
  2. 思考
  3. 书写

本次介绍的是IPython,相比自带的Python Shell。IPython更好用,体现在以下几个方面:

  • 支持操作系统命令:ls,pwd,cd,cp等
  • 通过!可执行shell命令,通过run可以执行shell脚本
  • 丰富的查看命令:who,whos,who_ls,?,??
  • 自动补全功能
  • 复制黏贴功能paste,cpaste

工具

Python for Data Anaysis一书很多人都推荐过,读了几章的确不错,本文将对首先书中提到的IPython工具进行一个介绍,更确切的说本文本身就是通过Ipython notebook生成的。通过markdown语言和代码的穿插,可以很好的将自己的想法与代码执行结果结合在一起展示。

启动IPython NoteBook

》Ipython notebook

操作系统命令

查看更多的操作系统命令可以通过magic函数:%quickref,下面仅通过ls命令做示例

ls
IPython.ipynb  PLA.copy       PLA.py         readme.txt

创建几个变量,为后续示例做准备

import numpy as np
al=[1,2,3]
ar=np.array(al)
print ar
[1 2 3]
from numpy.random import randn
data={i :randn() for i in range(7)}
print data
{0: -0.3461532513622743, 1: 1.4775166286053654, 2: 1.862570831741997, 3: 0.17019164149715485, 4: 0.26425221191468445, 5: 0.0175062396217853, 6: -0.6275550351675295}

执行shell命令与python脚本

在IPython中通过!直接执行shell命令,可以大大提高效率,如先编辑!vi hello.py,再执行run hello.py

丰富的查看功能

  • 可以查看所有变量whowhos
  • 通过?查看单个变量的详情,如果有源码还可以通过??查看
whos
Variable   Type                          Data/Info
--------------------------------------------------
al list n=3
ar ndarray 3: 3 elems, type `int64`, 24 bytes
data dict n=7
np module <module 'numpy' from '/Us<...>ages/numpy/__init__.pyc'>
randn builtin_function_or_method <built-in method randn of<...>te object at 0x10431ae10>
al?

自动补全

  • 通过Tab键可实现自动补全
  • 通过Ctrl+P可实现基于历史命令的补全

复制黏贴功能

通过paste命令,可以将粘贴板中的代码以一个block的形式粘贴到shell中执行,避免直接粘贴所带来的对齐等问题

支持debug

直接在IPython中debug可以提高效率,在进入debug模式ipdb,可通过?查询所有debug命令,并通过help topic查看具体某个命令的用法与含义,先介绍常见的几个命令:

  • b num 在num行设置断点
  • c (continue)继续执行
  • n (next)下一步
  • s (step) into 进入调用函数内部

    以下为一个示例
run -d hello.py
Breakpoint 1 at /Users/sunq/git/LearnPython/hello.py:1
NOTE: Enter 'c' at the [0;34mipdb> [0m prompt to continue execution.
> [0;32m/Users/sunq/git/LearnPython/hello.py[0m(1)[0;36m<module>[0;34m()[0m
[1;31m1[0;32m---> 1 [0;31m[0ma[0m[0;34m=[0m[0;36m3[0m[0;34m[0m[0m
[0m[0;32m 2 [0;31m[0mb[0m[0;34m=[0m[0;36m5[0m[0;34m[0m[0m
[0m[0;32m 3 [0;31m[0mc[0m[0;34m=[0m[0ma[0m[0;34m+[0m[0mb[0m[0;34m[0m[0m
[0m[0;32m 4 [0;31m[0;32mprint[0m [0mc[0m[0;34m[0m[0m
[0m[0;32m 5 [0;31m[0;32mprint[0m [0;34m'hello'[0m[0;34m[0m[0m
[0m
ipdb> b 3
Breakpoint 2 at /Users/sunq/git/LearnPython/hello.py:3
ipdb> n
> [0;32m/Users/sunq/git/LearnPython/hello.py[0m(2)[0;36m<module>[0;34m()[0m
[1;31m1[0;32m 1 [0;31m[0ma[0m[0;34m=[0m[0;36m3[0m[0;34m[0m[0m
[0m[0;32m----> 2 [0;31m[0mb[0m[0;34m=[0m[0;36m5[0m[0;34m[0m[0m
[0m[1;31m2[0;32m 3 [0;31m[0mc[0m[0;34m=[0m[0ma[0m[0;34m+[0m[0mb[0m[0;34m[0m[0m
[0m[0;32m 4 [0;31m[0;32mprint[0m [0mc[0m[0;34m[0m[0m
[0m[0;32m 5 [0;31m[0;32mprint[0m [0;34m'hello'[0m[0;34m[0m[0m
[0m
ipdb> c
> [0;32m/Users/sunq/git/LearnPython/hello.py[0m(3)[0;36m<module>[0;34m()[0m
[1;31m1[0;32m 1 [0;31m[0ma[0m[0;34m=[0m[0;36m3[0m[0;34m[0m[0m
[0m[0;32m 2 [0;31m[0mb[0m[0;34m=[0m[0;36m5[0m[0;34m[0m[0m
[0m[1;31m2[0;32m---> 3 [0;31m[0mc[0m[0;34m=[0m[0ma[0m[0;34m+[0m[0mb[0m[0;34m[0m[0m
[0m[0;32m 4 [0;31m[0;32mprint[0m [0mc[0m[0;34m[0m[0m
[0m[0;32m 5 [0;31m[0;32mprint[0m [0;34m'hello'[0m[0;34m[0m[0m
[0m
ipdb> c
8
hello
from python

计算程序耗时

time命令

time np.arange(100)+np.arange(100)
CPU times: user 44 µs, sys: 22 µs, total: 66 µs
Wall time: 56 µs array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50,
52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128,
130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154,
156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180,
182, 184, 186, 188, 190, 192, 194, 196, 198])

IPython学习笔记的更多相关文章

  1. IPython学习笔记(二)-魔术命令

    .魔术命令:以%为前缀的命令,是ipython的特殊命令,方便完成常见的任务.,常见的魔术命令有:%run,%paste,%cpaste,%timeit,%reset,%hist,%debug,%bo ...

  2. IPython学习笔记(一)

    开始看<利用python进行数据分析>这一本书,记录下学习的点滴,对于每一个小知识点记录得过于详细,但是好记性不如烂笔头,动动手还是记得比较深刻点. 1.Tab自动补齐 输入an后按Tab ...

  3. $《利用Python进行数据分析》学习笔记系列——IPython

    本文主要介绍IPython这样一个交互工具的基本用法. 1. 简介 IPython是<利用Python进行数据分析>一书中主要用到的Python开发环境,简单来说是对原生python交互环 ...

  4. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  5. Python学习笔记(一)基础

    学习资料 跟着廖雪峰的Python教程学习Python,大家可以去官方网站查看学习教程.使用的Python版本为3.0.x,解释器为CPython.本系列博客为学习笔记,记录跟随廖老师所学知识,同时会 ...

  6. Google TensorFlow深度学习笔记

    Google Deep Learning Notes Google 深度学习笔记 由于谷歌机器学习教程更新太慢,所以一边学习Deep Learning教程,经常总结是个好习惯,笔记目录奉上. Gith ...

  7. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

  8. Django 学习笔记(七)数据库基本操作(增查改删)

    一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...

  9. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

随机推荐

  1. 敏捷开发松结对编程系列:L型代码结构案例StatusFiltersDropdownList(中)

    这是松结对编程的第22篇(专栏目录). 接前文 业务代码 比较长,基本上就是看被注释隔开的三大段,先显示状态群筛选链接,然后是单个状态筛选,然后是显示下拉框的当前选中项,最后显示下拉框. public ...

  2. .Net设计模式_单列模式

    理解 博友的经典说法:很多人排队去厕所蹲坑一样,每一次只能让一个人去蹲坑,这是一种通俗的理解. 理论上的理解则为,我们需要写一个类,这个类的作用就是控制,从而保证在整个应用程序的生命周期中,在任何时刻 ...

  3. ExtJs 4: How To Add Grid Cell Tooltip

    最近忙一个项目的时候需要实现鼠标移到grid的某一行上提示消息.花了半天时间才解决.在网上找很久终于有找到一个有用的.我的版本是extjs4. 效果如图 Ext.onReady(function () ...

  4. editplus 使用小技巧

    1 editplus怎么设置tab键跳的字符数? Tools -> Preferences -> Files -> Settings & syntax -> Tab/I ...

  5. OBJ解析

    OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模 ...

  6. dom4j的基本操作

    /** * 建立一个XML文档,文档名由输入属性决定 * @param filename 需建立的文件名 * @return 返回操作结果, 0表失败, 1表成功 */ import java.io. ...

  7. 无法将类型“System.Collections.Generic.IEnumerable<EmailSystem.Model.TemplateInfo>”隐式转换为“System.Collections.Generic.List<EmailSystem.Model.TemplateInf

    List<Model.Template> templateList = templateBLL.RecommendTemplateByOrder(modelEbay); List<M ...

  8. IOS-UIProgressView的简单介绍

    IOS-UIProgressView的简单介绍 转载:http://blog.sina.com.cn/s/blog_9c2363ad0101e1jy.html // UIProgressView的使用 ...

  9. UITableView学习总结

    一.UITableView概述 UITableView继承自UIScrollView,可以表现为Plain和Grouped两种风格. UITableView有两个Delegate分别为:dataSou ...

  10. shell入门之变量测试 分类: 学习笔记 linux ubuntu 2015-07-10 15:49 31人阅读 评论(0) 收藏

    格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...