Introduction to Python - Reading e

Guy Griffiths
General purpose interpreted programming
Widely used by scientists and programmers
of all stripes
Supported by many 3rd-party libraries
(currently 21,054 on the main python
package website)
Standardisation of programming language to
teach to students
The Met Office is moving towards Python
Big user community
Publication-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 Office
Yahoo Maps/Groups
Linux distros
The best way to understand syntax is to look
at some examples
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
Functions are globally present if they’re in Most functions must be imported before
the path
being used
Namespaces are awkward and rarely
Namespaces are inherent
 Numerical library for python
 Written in C, wrapped by python
 Fast
 Built on top of numpy and BLAS/LAPACK (i.e. fast)
 Common maths, science, engineering routines
 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:
Using documentation and examples makes it
easy to do almost any plot you could want
 Use python-netcdf
 np.recfromcsv()
 Use python-grib, python-grib2, or cf-python
 cf-python
Matlab .mat
 If it’s a common format, someone will probably have written an
 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
 Quite heavyweight
 Good for very large projects, probably overkill
 HTML documentation is generated from code
In console:
 help(np.array)
In IPython console:
 np.array?
 np.array()?
In Spyder:
 Start typing, and function help appears in the help
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) []
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 []
The official python tutorial:
Software Carpentry:
Dive into Python:
Learn Python the Hard Way:
A Byte of Python:
 This is the most useful Matlab -> Python I’ve come
 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 Language
Mark Summerfield (Addison Wesley)
Learning Python
Mark 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