Introduction to Python - Reading e
Download
Report
Transcript Introduction to Python - Reading e
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