310 likes | 664 Views
Guy Griffiths. Introduction to Python. What is Python?. General purpose interpreted programming language Widely used by scientists and programmers of all stripes Supported by many 3 rd -party libraries (currently 21,054 on the main python package website) Free!. Why learn Python?.
E N D
Guy Griffiths Introduction to Python
What is Python? • 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!
Why learn Python? • Standardisation of programming language to teach to students • The Met Office is moving towards Python • Big user community • Publication-quality plots
What is Python not? • 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)
Who uses Python? • Met Office • Yahoo Maps/Groups • Google • NASA • ESRI • YouTube • Linux distros • reddit
Quick tour of Python syntax • The best way to understand syntax is to look at some examples
Why is it well-suited to science? • 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 • 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
Plotting and Matplotlib • 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
Data formats • 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()
Python IDEs • 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
Using Python documentation • 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
Spyder, Data, and Plotting Examples • Let’s put all that into action with an example: • Reading from a NetCDF file and creating a plot of mean and standard deviation
How can I get Python? • 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]
How can I learn Python? • 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/
Converting from Matlab to Python • 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
Some recommended books • 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)
What next? • 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 Any questions?