In this post I’m going to link to a load of fairly obvious and some not so obvious sources of information for anyone starting out with Scipy.
For a quick introduction to everything releated to scientific python the Python Scientific Lecture Notes from Scipy 2011 are a good place to start. There are also some good lecture notes from a summer school on scientific python at Duke university here.
There’s also some lecture notes and tip sheets from Cornell available from the links on their Computational Methods for Nonlinear Systems page which may prove useful.
For general help on the Python programming language:
- The main Python website has a lot of information and documentation though it is quite dry. Note that Scipy etc. are all based around Python 2.x and not 3.x. Support for 3.x is still under consideration/development. There is an offical tutorial available in the documentation section.
- Think Python, now an O’Reilly Python text and available for free.. yeah. It’s a fairly famous text and well worth looking at.
- Dive into Python, a free book (you can buy a print copy if you wish) which is available to read online and aims to teach the Python language.
- A Byte of Python, another free book with lots of little chunks of example code. A very handy reference.
- Learn to Program, teaches you how to program from scratch using the Python programming language.
- Finally O’Reilly’s Python Pocket Reference is a super handy little book to have beside you whilst trying to code.
Numpy provides n-dimensional array objects with sophisticated functions. It also provides useful linear algebra, Fourier transforms and random number functions. Scipy is built on Numpy and provides a series of high level functions such as: integration, interpolation, optimiziation, signal processing, statistics, linear algebra, file input/output etc.
- The main Numpy website.
- The main Scipy website.
- The docs for Numpy/Scipy can be found here.
- The Numpy/Scipy mailing lists can be a useful source of help, you can subscribe here.
- The Enthought YouTube channel with various video tutorials.
Matplotlib is a Python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms. It largely emulates Matlab plotting functionallity in Python.
- The main Matplotlib website.
- This tutorial by Nicolas Rougier is very good and a handy reference.
- The rather handy plot gallery, simply click on a plot to see the code to generate it.
- The Matplotlib mailing lists, another useful source for help.
- Matplotlib for python developers, a book on Matplotlib.
iPython provides a rich toolkit for interactive computing with Python. (Note iPython is built into Spyder).
Spyder is a powerful interactive development environment for the Python language with advanced editing, interactive testing, debugging and introspection features.
There are anual Scipy conferences aimed at Scientific Python. Please see the Scipy conference homepage. These sites are worth looking at post conference as quite often a lot of useful material appears on them. There is also the more general Python conference: PyCon.
Enthought the company behind a lot of the development work on Scipy, Traits, MayaVi etc. offer training courses in the US and Europe specifically aimed at scientists and engineers.
Enthought also offer consulting services if you are looking help or a particular problem solved (really only useful if your company wants to foot the bill).
Distributions and paid support
If you are running Windows you have a choice. There is the excellent and completely free Python xy distribution for Windows. It is free for everyone, includes everything you need and has Spyder bundled with it which is a rather nice development environment.
However this isn’t the only scientific Python distribution. Enthought also offer the Enthought Python Distribution (EPD) which bundles all the tools you’ll need as well. It is also available on Mac OS and Linux. Currently there is no integrated development environment similar to Spyder however one is in Beta for the version 8 release. The other downside/upside of EPD is that you have to pay for it for comerical use, it is free for academics. The upside of paying is that you can get various levels of support provided by Enthought. They do offer a stripped back distribution called EPD Free which is adequete for most day to day stuff and should have everything needed to run most scripts.
Under Linux you can use your package manager to install all the modules you want. Under OS X there is Fink and Macports available to you. Finally there is nothing to stop you from downloading all the modules you need and doing your own install or even compiling everything from source yourself. There is a rather old post here on how to do this under OS X which might be of use to you.