Introduction to Python - Reading e

advertisement
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 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
Google
NASA
ESRI
YouTube
Linux 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 Most functions must be imported before
the path
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.html

Using 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 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
Download