windows下面安装和使用Python, IPython NoteBook (详细步骤)

Python Notebook简介1

IPython notebook目前已经成为用Python做教学、计算、科研的一个重要工具。本文介绍IPython notebook的一些基本用法,以及如何使用它调试Cython程序。

IPython Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果。在浏览器的界面中使用单元(Cell)保存各种信息。Cell有多种类型,经常使用的有表示格式化文本的Markdown单元,和表示代码的Code单元。

每个代码单元都有一个输出区域,在Code单元中输入代码,按 Shift-Enter 将运行此代码,代码中最后一个表达式的值将输出区域显示。如果希望屏蔽输出,可以在最后一条语句之后添加一个分号:”;”。此外,代码中还可以使用print语句在输出区域中显示信息。

在Markdown单元中还可以直接使用Html和Javascript。

数学公式

在Markdown单元中可以使用LaTeX表示数学公式,例如。数学公式的显示使用MathJax,缺省情况下,MathJax从网络上下载,如果希望离线使用它,需要在IPython Notebook中输入如下代码,把MathJax安装到本地磁盘中:

from IPython.external.mathjax import install_mathjax
install_mathjax()

Code单元的输出也可以显示为数学公式,例如在单元中输入如下代码,将显示为数学公式:

from IPython.display import Latex
Latex(r"$\sqrt{x^2+y^2}$")

SymPy的表达式也可以显示为LaTex,例如:

%load_ext sympyprinting
from sympy import *
x, y = symbols("x,y")
sqrt(x**2+y**2)

* 以%开头的为IPython的命令(Magic Command),这里通过%load_ext命令载入sympyprinting扩展插件,载入此插件之后,所有的SymPy表达式都显示为数学公式。*

各种显示

IPython.display模块中提供了许多显示Python返回值的类,例如下面的代码用Image类显示”python.png”图片,缺省路径为Notebook文件所在的目录:

from IPython.display import Image
Image(filename="python.png")

Image还可以用来显示表示图像的字符串。例如下面的代码通过cv2的imencode()将NumPy数组转换为一个表示PNG图像数据的数组,然后将此数组转换为字符串之后通过Image()将显示为图像:

import cv2
import numpy as np
from IPython.display import Image
img = np.random.randint(0,255,(250,250,3))
cv2.blur(img, (11,11), img)
r, dat = cv2.imencode(".png",img)
Image(dat.tostring())


此外,还可以通过HTML和Javascript将Python代码的输出显示为Html,或者作为Javascript运行。

from IPython.display import Javascript
Javascript("alert('ok')")

将在浏览器中运行Javascript代码。

Magic命令

IPython中Magic命令有两种执行方式,以%开始的命令被称为行命令,它只对单行有效,以%%开头的为单元命令,它放在单元的第一行,对整个单元有效。例如timeit命令可以快速测试代码的执行效率,它可以作为行命令或者单元命令。

%timeit 1 + 1
%timeit 1.0 + 1.0
%timeit "1" + "1"
10000000 loops, best of 3: 52 ns per loop
10000000 loops, best of 3: 53.4 ns per loop
10000000 loops, best of 3: 50.9 ns per loop
%%timeit
s = 0
for i in xrange(100):s += i
100000 loops, best of 3: 11 us per loop

每个Magic命令都可以指定参数,可以输入timeit?查看其帮助文档。下面让我们看看一些常用的Magic命令。

%pylab命令将载入numpy和pylab,并且将这两个模块中的名字载入到全局名字空间中。缺省参数时,它使用matplotlib的缺省界面库显示图表,如果带inline参数则将图表作为图像插入到Notebook中。使用界面库显示图像时可以使用交互工具,而将图表直接插入到Notebook中则有利于编写文档。

下面的例子,plot和random是从pylab和numpy中载入的。

%pylab inline
plot(random.randn(100));
Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.


%load可以从文件或者网址载入代码到一个新的单元中,例如下面载入某个matplotlib的示例程序,并执行:

 %load http://matplotlib.org/mpl_examples/pylab_examples/histogram_demo.py
#!/usr/bin/env python
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as pltmu, sigma = 100, 15
x = mu + sigma*np.random.randn(10000)# the histogram of the data
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='green', alpha=0.75)# add a 'best fit' line
y = mlab.normpdf( bins, mu, sigma)
l = plt.plot(bins, y, 'r--', linewidth=1)plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title(r'$\mathrm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)plt.show()


%prun用于代码的执行性能分析,可以作为行命令和单元命令使用。下面的程序分析numpy.linalg.det()的性能:

%%prun
for i in xrange(100):linalg.det(random.rand(10,10))
其输出如下:3402 function calls in 0.096 secondsOrdered by: internal timencalls  tottime  percall  cumtime  percall filename:lineno(function)100    0.032    0.000    0.091    0.001 linalg.py:1560(slogdet)300    0.022    0.000    0.022    0.000 {method 'reduce' of 'numpy.ufunc' objects}200    0.011    0.000    0.012    0.000 numeric.py:167(asarray)100    0.006    0.000    0.006    0.000 linalg.py:84(_realType)100    0.005    0.000    0.005    0.000 linalg.py:151(_assertRank2)...

%load_ext载入IPython的扩展模块,通过它可以载入更多的Magic命令。下面我们载入cythonmagic模块,并使用%%cython命令编译一个高效的频率统计函数count()。

%load_ext cythonmagic
测试Cython代码
Cython的代码基本和Python的代码类似,但是可以使用类型声明,Cython可以使用这些类型声明产生更高效的C语言代码,并编译成Python的扩展模块。使用%%cython命令简化了编译扩展模块的过程,它会自动创建C语言程序,编译并载入。由于扩展模块无法卸载,因此IPython采用的策略是每次编译不同的代码都会产生一个全新的扩展模块。方便我们不退出Python环境即可运行新的代码。

%%cython
def count(list data):cdef:dict result = {}int i, length = len(data)object itemfor i in range(length):item = data[i]if item in result:(<list> result[item]).append(i)else:result[item] = [i]
    return result

下面是count()的Python版本。

from collections import defaultdict
def countpy(data):result = defaultdict(list)for i,item in enumerate(data):result[item].append(i)return result

先测试二者的结果是否相同:

import random
data = [random.randint(0,100) for _ in xrange(10000)]
count(data) == countpy(data)
True

然后测试它们的执行速度,可以看出Cython版本比Python的要快2倍多。在这个测试中,Cython程序也同样使用列表和字典等对象,但是由于可以直接调用Python的C API,因此Cython版本的效率能提高几倍。如果只是单纯的数值运算,Cython能将程序提升到与C语言相近的速度。

%timeit countpy(data)
%timeit count(data)
100 loops, best of 3: 4.52 ms per loop
1000 loops, best of 3: 1.8 ms per loop

Python Notebook简介相关推荐

  1. IPython Notebook简介1

     原文:http://hyry.dip.jp/tech/slice/slice.html/35 Python Notebook简介1 作者 : RY    标签: cython ipython-n ...

  2. Jupyter Notebook简介及默认路径修改

    Jupyter Notebook简介 Jupyter Notebook简介 一.Jupyter Notebook说明 1.1 启动方式 1.2 界面说明 1)主界面 2)Notebook界面 1.单击 ...

  3. python notebook怎么运行_jupyter notebook简单使用教程

    1.jupyter notebook简介 jupyter notebook是一个在线编辑器,可以在网页上编辑程序,在编辑的过程中,每次编辑一行代码就可以运行一行代码,运行的结果也可以显示在代码的下方, ...

  4. IDE之Jupyter:交互式文档Jupyter Notebook简介、安装、使用方法详细攻略

    IDE之Jupyter:交互式文档Jupyter Notebook简介.安装.使用方法详细攻略 目录 Jupyter Notebook简介 Jupyter Notebook安装 第一步,安装软件 第二 ...

  5. 《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第1章,第1.2节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1. ...

  6. Python列表简介

    Python列表简介 什么是列表 #普通的变量定义形式 tom ='Tom' jack ='Jack' john ='John'pet1 ='cat' pet2 ='dog' pet3 ='bird' ...

  7. Python编程简介

    Python编程简介 2011年06月23日 NOTE: The following is a short tutorial about python program, for Chinese rea ...

  8. 大数据教程【05.01】--Python 数据分析简介

    更多信息请关注WX搜索GZH:XiaoBaiGPT Python数据分析简介 本教程将介绍如何使用Python进行大数据分析.Python是一种功能强大且易于使用的编程语言,具备丰富的数据分析库和工具 ...

  9. Python基础知识(Python的简介、Python环境的安装、集成开发环境Pycharm的安装)

    1.Python的简介 python是跨平台的计算机语言.解释型语言.交互式语言.面向对象语言.初学者最好学的语言 什么是跨平台:意思就是说可以在很多操作系统中执行.比如:可以在windows操作系统 ...

最新文章

  1. Linux(二) 常用命令和目录结构
  2. python作业6月14日
  3. 晟数学院 oracle,Oracle 控制文件存储解析
  4. 如何在 Windows 10 上安装 WSL 2
  5. python 坐标轴刻度 格式_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
  6. 水表多标签训练问题总结
  7. 设计模式——Facade(外观)模式
  8. php压力比例混合器图片,教你认识各种泡沫比例混合器
  9. Synchronized和Reentrantlock的区别
  10. 使用 closest 和 matches 方法来检测元素是否存在某选择器
  11. 高人、天才、牛逼…从柳传志到雷军、马云,几乎没人不服任正非!
  12. c语言电报,[编程入门]电报加密-题解(C语言代码)
  13. S参数模型和 IBIS模型入门
  14. CAD将选中的实体做成块(网页版)
  15. 盘点世界上奇怪的 6 种编程语言
  16. c++实现PCA(BIL, BSQ, BIP三种格式数据)
  17. 超简单的C++去重、排序
  18. aliyun视频点播学习
  19. “笨办法”学Python3,Zed A. Shaw, 习题13
  20. 2022广东省安全员B证第三批(项目负责人)考试试题及模拟考试

热门文章

  1. 【JZOJ B组】【NOIP2015模拟10.27】魔道研究
  2. 世界各国的手机使用者
  3. android 不支持存储卡,安卓手机SD卡不能用 原因及解决方法【详解】
  4. 1024程序员日你知道吗?
  5. 北京app开发公司哪家好 北京app开发技术因素
  6. 企业安全事件回顾:企业怎么才能做好源代码防泄露?
  7. els 方块向右移动边界判断、向下加速
  8. PostgreSQL 安装教程 Windows版
  9. 解决报错 Error in processing command line: Don‘t understand command line argument “-cl-no-subgroup-ifp“
  10. 小辣椒手机权限开启方法