Cloga:这份文档是euroscipy关于Python科学计算资源的一个教程。英文版地址为:http://scipy-lectures.github.io/,是学习Python科学计算生态体系很好的资料,因此,我会陆续将它翻译为中文,相关Gitbub地址为:https://github.com/cloga/scipy-lecture-notes_cn,完整的中文目录
作者 : Fernando Perez, Emmanuelle Gouillart, Gaël Varoquaux, Valentin Haenel
科学家用哪种解决方案进行工作?
优势:
不足:
优势:
不足:
优势:
不足:
优势:
不足:
与Matlba,Scilab或者R不同,Python并没有预先绑定的一组科学计算模块。下面是可以组合起来获得科学计算环境的基础的组件。
Python,通用的现代计算语言
IPython, 高级的Python Shell http://ipython.org/
测试和理解算法的交互工作:在这个部分我们描述一下用IPython的交互工作流来方便的研究和理解算法。
Python是一门通用语言。与其他的通用语言一样,没有一个绝对权威的工作环境,也不止一种方法使用它。尽管这对新人来说不太好找到适合自己的方式,但是,这使得Pyt hon被用于在网站服务器或嵌入设备中编写程序。
本部分的参考文档:
IPython用户手册:http://ipython.org/ipython- doc/dev/index.html
启动ipython:
print('Hello world')
Hello world
在对象后使用?运算符获得帮助:
In [2]: print
Type: builtin_function_or_method
Base Class: <type ’builtin_function_or_method’>
String Form: <built-in function print>
Namespace: Python builtin
Docstring:
print(value, ..., sep=’ ’, end=’\n’, file=sys.stdout)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
在文本编辑器中,创建一个my_file.py文件。在EPD(Enthought Python Distribution)中,你可以从开始按钮使用Scite。在Python(x,y)中, 你可以使用Spyder。在Ubuntu中, 如果你还没有最喜欢的编辑器,我们建议你安装Stani’s Python editor。在这个文件中,输入如下行:
s = 'Hello world'
print(s)
现在,你可以在IPython中运行它,并研究产生的变量:
%run my_file.py
Hello world
s
'Hello world'
%whos
Variable Type Data/Info
----------------------------
s str Hello world
从脚本到函数
尽管仅使用脚本工作很诱人,即一个满是一个接一个命令的文件,但是要有计划的逐渐从脚本进化到一组函数:
脚本不可复用,函数可复用。
以函数的角度思考,有助于将问题拆分为小代码块。
IPython用户手册包含关于使用IPython的大量信息,但是,为了帮你你更快的入门,这里快速介绍三个有用的功能:历史,魔法函数,别称和tab完成。
与Unix Shell相似,IPython支持命令历史。按上下在之前输入的命令间切换:
In [1]: x = 10
In [2]: <UP>
In [2]: x = 10
IPython通过在命令前加%字符的前缀,支持所谓魔法函数。例如,前面部分的函数run和whos都是魔法函数。请注意automagic设置默认是 启用,允许你忽略前面的%。因此,你可以只输入魔法函数仍然是有效的。
其他有用的魔法函数:
cd ..
/Users/cloga/Documents
timeit x = 10
10000000 loops, best of 3: 26.7 ns per loop
In [5]: cpaste
Pasting code; enter ’--’ alone on the line to stop or use Ctrl-D. :In [3]:
timeit x = 10
:--
10000000 loops, best of 3: 85.9 ns per loop
In [6]: cpaste
Pasting code; enter ’--’ alone on the line to stop or use Ctrl-D. :>>> timeit x
= 10
:--
10000000 loops, best of 3: 86 ns per loop
In [7]: x === 10
File "" , line 1
x === 10 ^
SyntaxError: invalid syntax
In [8]: debug
> /home/esc/anaconda/lib/python2.7/site-
packages/IPython/core/compilerop.py(87)ast_parse()
86 and are passed to the built-in compile function."""
---> 87 return compile(source, filename, symbol, self.flags |
PyCF_ONLY_AST, 1)
88
ipdb>locals()
{’source’: u’x === 10\n’, ’symbol’: ’exec’, ’self’:
,
’filename’: ’’}
IPython help
- 内置的IPython手册可以通过%quickref魔法函数进入。
- 输入%magic会显示所有可用魔法函数的列表。
而且IPython提供了大量的别称来模拟常见的UNIX命令行工具比如ls等于list files,cp等于copy files以及rm等于remove files。输入alias可以显示所有的别称的列表:
alias
Total number of aliases: 12
[('cat', 'cat'),
('cp', 'cp'),
('ldir', 'ls -F -G -l %l | grep /$'),
('lf', 'ls -F -l -G %l | grep ^-'),
('lk', 'ls -F -l -G %l | grep ^l'),
('ll', 'ls -F -l -G'),
('ls', 'ls -F -G'),
('lx', 'ls -F -l -G %l | grep ^-..x'),
('mkdir', 'mkdir'),
('mv', 'mv'),
('rm', 'rm'),
('rmdir', 'rmdir')]
最后,提一下tab完成功能,我们从IPython手册引用它的描述:
Tab completion, especially for attributes, is a convenient way to explore the structure of any object you’re dealing with. Simply type object_name. to view the object’s attributes. Besides Python objects and keywords, tab completion also works on file and directory names.
In [1]: x = 10
In [2]: x.<TAB>
x.bit_length x.conjugate x.denominator x.imag x.numerator x.real
In [3]: x.real.
x.real.bit_length x.real.denominator x.real.numerator x.real.conjugate
x.real.imag x.real.real
In [4]: x.real.