UP | HOME

Python

Table of Contents

Fast saving data 2011-11-16 Wed

Test on a 640x480 uint16 array, use timeit, execute 10 times

Methodnumpy.savetxtnumpy.savepickle.dumppickle.dump(protocol=2)cPickle.dumpcPickle.dump(protocol=2)h5py
Time (ms)3202524023230231.8
File size (B)768000061448023615996145362361564614536616872

don't create new.py 2011-10-27 Thu

the file will interfer with the standard library's "new" module.

python setup.py uninstall 2011-10-20 Thu

  • python setup.py install --record installedfiles.txt
  • cat installedfiles.txt | xargs rm -rf

computational science

sage: writing some notes

self: basic physic simulation

使用Python做图像处理

TODO Toolbox for Scientific Computing

As a researcher,

  • productive:
  • visualization: plotting in 2D and 3D, quality (LaTeX)
  • extensibility: libraries, working with other languages
  • mature: easy install, stable, documentation

The Zen of Python

import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

八荣八耻

以动手实践为荣 , 以只看不练为耻; 以打印日志为荣 , 以单步跟踪为耻; 以空格缩进为荣 , 以制表缩进为耻; 以单元测试为荣 , 以人工测试为耻;

以模块复用为荣 , 以复制粘贴为耻; 以多态应用为荣 , 以分支判断为耻; 以Pythonic为荣 , 以冗余拖沓为耻; 以总结分享为荣 , 以跪求其解为耻;

—— 转载自 http://wiki.woodpecker.org.cn/moin/

使用Matplotlib画图

有些工作需要画一些数据图,这在Matlab中是十分方便的,但是毕竟是收费的 家伙。在Linux下比较著名的数据图工具是gnuplot,这个是免费的,Python有 一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。而 Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(对公式支 持得也很好)!

参考:基于 Python Matplotlib 模块的高质量图形输出

Python for AI Programming

在学习算法的时候想用一种语言实现一下,能够加深理解。最先想到的是 Scheme,因为听说国外教计算编程很多都用它。由于对Lisp也只是懂得皮毛,看 了一晚上的《Teach Yourself Scheme in Fixnum Days》,没有感觉到Scheme和 Lisp的差别(果然只是方言啊)。我的目标是实现一些规划或者搜索的算法,并 不是非常底层的计算机算法,应该与《AI: a modern approch》中介绍的算法类 似,而且也是想能够将程序代码和伪码对应,于是就去看该书的伪码是用什么语 言实现的,发现主要有三种实现:

  • Lisp: 搞AI的当然使用Lisp,不过是针对第一版书的代码,而且似乎已经不 再更新。
  • Python: 由书的第二作者Peter Norvig(现在在google工作)负责维护的,在 google上建立项目aima-python
  • Java: aima-java(不得不感慨现在Java非常流行)。

当然还有用其它语言实现的,但是不是不完整就是已经不更新了。看来研究人工 智能的算法非这三种莫属了,这三种语言我都学过一些, 但都是皮毛,Alan Perlis(ACM第一任主席,图灵奖得主,1922-1990)曾经说 过: “如果一门语言不能影响你对编程的想法,那它就不值得去学”,而我现在编 程仍然是C++的想法,因此打算深入地掌握一门。到底选择哪一门呢?

这时候看到了《Teach Yourself Programming in Ten Years》一文,文中尖锐 地指出现在大家学计算机的浮躁心理,都想很快学会一门编程语言,比如我刚刚 看的《Teach Yourself Scheme in Fixnum Days》。同时Peter Norvig也对这三 种语言作出了比较和分 析:《A Retrospective on Paradigms of AI Programming》《Python for Lisp Programmers》《Lisp as an Alternative to Java》。 在综合考虑性能、语法、可扩展性、功能上,发现还是Python是最合适的。Lisp 各方面都很优秀,但是

  • 谓词表达式,很不习惯,很难和伪码对应
  • 没法编写图形界面程序

Java则是效率太低,并且使用Java时,我总是当作C++一样使用,也就是说不会 改变我的编程想法。而Python则比较好地满足了要求,Lisp有的功能几乎都有, 而且没有Lisp以上两个缺点。

安装wxPython

先从wxPython官方网站下载wxPython,有20多M,解压之后一看,怎么是一个wxWidget的包,只是多了一个wxPython的子目录,看README之后才知道,要安装wxPython必须先安装wxWidget,而我已经安装了wxWidget了,这一步应该可以跳过吧,直接进入wxPython子目录.

编译

看了BUILD文档,发现过程很是复杂,试了一下,有些变量设得有问题,突然发现自带了一个build-wxpython.sh脚本,可以直接用它来编译

./build-wxpython.sh all unicode

(2008.6.12补充:实际上编译的过程就是先编译和安装wxWidgets,然后在 wxPython子目录中 ./setup build_ext ,并用 sudo ./setup install 安装)

这个脚本似乎还是把上一层目录的wxWidget重新编译了一遍……

设置环境变量 export PYTHONPATH=$WXDIR/wxPython

运行demo:

cd $WXDIR/wxPython/demo

./demo.py

这个demo是在是太强了!每个控件都有overview,code和demo三部分构成,有了它 要什么功能只要找到对应的控件就可以了。还支持修改demo代码,并可以直接运 行!

© 2012-05-17 22:26:44 CEST Xu Yuan (xuyuan.cn@gmail.com) Proudly powered by Org version 7.8.10 with Emacs version 24. Validate XHTML 1.0