Guy Griffiths
General purpose interpreted programming language
Widely used by scientists and programmers of all stripes
Supported by many 3rd-party libraries (currently 21,054 on the main python package website)
Free!
Standardisation of programming language to teach to students
The Met Office is moving towards Python
Big user communityPublication-quality plots
An integrated graphical environment like Matlab (although there are tools which put it in one – e.g. Spyder)
Specifically designed for scientists/mathematicians (but the 3rd-party libraries for plotting/numerical work are some of the best around)
High performance (but it is very easy to wrap C/Fortran libraries in Python code)
Met OfficeYahoo Maps/GroupsGoogleNASAESRIYouTubeLinux distros reddit
The best way to understand syntax is to look at some examples
Matlab Python
Indexing starts at 1 Indexing starts at 0
Spaces aren’t very important Spaces indicate loops and blocks
1 externally-visible function per file
Functions can be defined anywhere
Result of each line output by default, suppressed by ;
No output unless specifically asked for
Comes with an IDE (but can be run without one)
Doesn’t come with an IDE (but several are available)
Functions are globally present if they’re in the path
Most functions must be imported before being used
Namespaces are awkward and rarely used
Namespaces are inherent
Numpy Numerical library for python Written in C, wrapped by python Fast
Scipy Built on top of numpy and BLAS/LAPACK (i.e.
fast) Common maths, science, engineering routines
Matplotlib Hugely flexible plotting library Similar syntax to Matlab Produces publication-quality output
Numpy arrays behave slightly differently to Python lists They cannot hold mixed data types But they’re a lot faster than lists For numerical work, always use Numpy
arrays Convert a list to an array with np.array(list)
Numpy functions all return arrays, so often nothing specific needs doing
Matplotlib has very similar syntax to Matlab
Lots of examples: http://matplotlib.org/gallery.html http://matplotlib.org/basemap/users/
examples.htmlUsing documentation and examples
makes it easy to do almost any plot you could want
NetCDF Use python-netcdf
CSV np.recfromcsv()
GRIB Use python-grib, python-grib2, or cf-python
PP cf-python
Matlab .mat scipy.io.loadmat(‘filename.mat’)
Others If it’s a common format, someone will probably
have written an adapter If it’s text based, use np.genfromtxt()
Spyder is most Matlab-like Contains inline help, variable inspector,
interactive console & editor IPython is powerful console-based
interpreter Not an IDE, but highly recommended for
experimenting with prior to actual scripting Eclipse + Pydev make a very powerful
Python IDE Quite heavyweight Good for very large projects, probably overkill
otherwise
Online HTML documentation is generated from
code comments In console:
help(np.array) In IPython console:
np.array? np.array()?
In Spyder: Start typing, and function help appears in
the help window
Let’s put all that into action with an example: Reading from a NetCDF file and creating
a plot of mean and standard deviation
Firstly, get version 2.7.x. Python 3 will work but numerical libraries are less widely supported.
Windows – Python(x,y) [www.pythonxy.com]This is a scientific/engineering oriented distribution of python. It includes everything you need to get started
Linux – it’s already there! Unless you’re running a very unusual distro (in which case you probably already know what you’re doing).
Mac – it’s already there on OS X, but it’s old. Get a more up-to-date one [www.python.org]
The official python tutorial:http://docs.python.org/tutorial/
Software Carpentry:http://software-carpentry.org/
Dive into Python:http://www.diveintopython.net/
Learn Python the Hard Way:http://learnpythonthehardway.org/
A Byte of Python:http://www.ibiblio.org/g2swap/byteofpython/read/
http://www.scipy.org/NumPy_for_Matlab_Users This is the most useful Matlab -> Python
I’ve come across. Contains key differences, things to note,
and a big list of examples in both Matlab and Python
Python Essential Reference David M. Beazley (Addison Wesley)
Programming in Python 3: A Complete Introduction to the Python LanguageMark Summerfield (Addison Wesley)
Learning PythonMark Lutz (O’Reilly Media)
Go away and try it! Convert existing Matlab code (easy) Convert existing Fortran code (harder) Experiment with something new
Then come back in 3 weeks’ time for a workshop, bringing any questions/problems No planned lecture Will go through common problems people
have Join the met-python mailing list
Thanks for listening