49
Introduction Python Tutorial Numerics & Plotting Standard library An introduction to the Python programming language Prabhu Ramachandran Department of Aerospace Engineering IIT Bombay 16, July 2007 Prabhu Ramachandran Introduction to Python Introduction Python Tutorial Numerics & Plotting Standard library Outline 1 Introduction Introduction to Python 2 Python Tutorial Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous 3 Numerics & Plotting NumPy Arrays Plotting: Matplotlib SciPy 4 Standard library Quick Tour Prabhu Ramachandran Introduction to Python

Py tut-handout

Embed Size (px)

Citation preview

Page 1: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

An introduction to the Python programminglanguage

Prabhu Ramachandran

Department of Aerospace EngineeringIIT Bombay

16, July 2007

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Outline

1 IntroductionIntroduction to Python

2 Python TutorialPreliminariesData typesControl flow, functionsModules, exceptions, classesMiscellaneous

3 Numerics & PlottingNumPy ArraysPlotting: MatplotlibSciPy

4 Standard libraryQuick Tour

Prabhu Ramachandran Introduction to Python

Page 2: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Introduction

Creator and BDFL: Guido van Rossum

BDFL == Benevolent Dictator For Life

Conceived in December 1989

The name “Python”: Monty Python’s Flying Circus

Current stable version of Python is 2.5.x

PSF license (like BSD: no strings attached)

Highly cross platform

Runs on the Nokia series 60!

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Resources

Available as part of any sane GNU/Linux distribution

Web: http://www.python.org

Documentation: http://www.python.org/docFree Tutorials:

Official Python tutorial:http://docs.python.org/tut/tut.htmlByte of Python: http://www.byteofpython.info/Dive into Python: http://diveintopython.org/

Prabhu Ramachandran Introduction to Python

Page 3: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Why Python?

High level, interpreted, modular, OO

Easy to learn

Easy to read code

Much faster development cycle

Powerful interactive interpreter

Rapid application development

Powerful standard library

Interfaces well to C++, C and FORTRAN libraries

In short: there is little you can’t do with it

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

A quote

I came across Python and its Numerical extension in1998 . . . I quickly fell in love with Python programmingwhich is a remarkable statement to make about aprogramming language. If I had not seen others with thesame view, I might have seriously doubted my sanity.

– Travis Oliphant (creator of NumPy)

Prabhu Ramachandran Introduction to Python

Page 4: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Why not ***lab?

Open Source, Free

Portable

Python is a real programming language: large and smallprogramsCan do much more than just array and math

Wrap large C++ codesBuild large code bases via SConsInteractive data analysis/plottingParallel applicationJob scheduling on a custom clusterMiscellaneous scripts

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Why not Python?

Can be slow for high-performance applications

This can be fairly easily overcome by using C/C++/FORTRANextensions

Prabhu Ramachandran Introduction to Python

Page 5: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Use cases

NASA: Python Streamlines Space Shuttle Mission Design

AstraZeneca Uses Python for Collaborative Drug Discovery

ForecastWatch.com Uses Python To Help Meteorologists

Industrial Light & Magic Runs on Python

Zope: Commercial grade CMS

RedHat: install scripts, sys-admin tools

Numerous success stories:http://www.pythonology.com/success

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Introduction to Python

Before we begin

This is only an introduction

Python is a full-fledged programming language

Please read the tutorial

It is very well written and can be read in one afternoon

Prabhu Ramachandran Introduction to Python

Page 6: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Preliminaries: The Interpreter

Python is interpreted

Interpreted vs. Compiled

Interpreted languages allow for rapid testing/prototyping

Dynamically typed

Full introspection of code at runtime

Did I say dynamic?

Does not force OO or a particular programming paradigmdown your throat!

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Preliminaries . . .

Will follow the Official Python tutorial

No lexical blocking

Indentation specifies scope

Leads to easier to read code!

Prabhu Ramachandran Introduction to Python

Page 7: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Using the interpreter

Starting up: python or ipython

Quitting: Control-D or Control-Z (on Win32)

Can use it like a calculator

Can execute one-liners via the -c option: python -c"print ’hello world’"

Other options via python -h

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

IPython

Recommended interpreter, IPython:http://ipython.scipy.org

Better than the default Python shellSupports tab completion by defaultEasier object introspectionShell access!Command system to allow extending its own behaviorSupports history (across sessions) and loggingCan be embedded in your own Python codeSupport for macrosA flexible framework for your own custom interpreterOther miscellaneous conveniencesWe’ll get back to this later

Prabhu Ramachandran Introduction to Python

Page 8: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Basic IPython features

Startup: ipython [options] filesipython [-wthread|-gthread|-qthread]:Threading modes to support wxPython, pyGTK and Qtipython -pylab: Support for matplotlib

TAB completion:Type object_name.<TAB> to see list of optionsAlso completes on file and directory names

object? shows docstring/help for any Python objectobject?? presents more docs (and source if possible)Debugging with %pdb magic: pops up pdb on errorsAccess history (saved over earlier sessions also)

Use <UpArrow>: move up historyUse <Ctrl-r> string: search history backwardsUse Esc >: get back to end of history

%run [options] file[.py] lets you run Python code

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Basic concepts

Dynamically typed

Assignments need not specify a type

a = 1a = 1.1a = " foo "a = SomeClass ( )

Comments:

a = 1 # In− l i n e comments# Comment i n a l i n e to i t s e l f .a = " # This i s not a comment ! "

Prabhu Ramachandran Introduction to Python

Page 9: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Basic concepts

No lexical scoping

Scope determined by indentation

for i in range ( 1 0 ) :pr in t " i n s i d e loop : " ,# Do something i n the loop .pr in t i , i ∗ i

pr in t " loop i s done ! " # This i s ou ts ide the loop !

Assignment to an object is by reference

Essentially, names are bound to objects

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Basic types

Basic objects: numbers (float, int, long, complex), strings,tuples, lists, dictionaries, functions, classes, types etc.

Types are of two kinds: mutable and immutable

Immutable types: numbers, strings, None and tuples

Immutables cannot be changed “in-place”

Mutable types: lists, dictionaries, instances, etc.

Mutable objects can be “changed”

Prabhu Ramachandran Introduction to Python

Page 10: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

What is an object?

A loose and informal but handy description

An object is a particular instance of a general class of things

Real world example

Consider the class of cars made by Honda

A Honda Accord on the road, is a particular instance of thegeneral class of cars

It is an object in the general sense of the term

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Objects in a programming language

The object in the computer follows a similar idea

An object has attributes (or state) and behavior

Object contains or manages data (attributes) and hasmethods (behavior)

Together this lets one create representation of “real” things onthe computer

Programmers then create objects and manipulate themthrough their methods to get things done

In Python everything is essentially an object – you don’t haveto worry about it

Prabhu Ramachandran Introduction to Python

Page 11: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Numbers

>>> a = 1 # I n t .>>> l = 1000000L # Long>>> e = 1.01325e5 # f l o a t>>> f = 3.14159 # f l o a t>>> c = 1+1 j # Complex !>>> pr in t f ∗c / a(3.14159+3.14159 j )>>> pr in t c . rea l , c . imag1.0 1.0>>> abs ( c )1.4142135623730951

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Boolean

>>> t = True>>> f = not tFalse>>> f or tTrue>>> f and tFalse

Prabhu Ramachandran Introduction to Python

Page 12: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Strings

s = ’ t h i s i s a s t r i n g ’s = ’ This one has " quotes " i n s i d e ! ’s = " The reverse wi th ’ s ing le−quotes ’ i n s i d e ! "l = "A long s t r i n g spanning severa l l i n e s \one more l i n e \ye t another "t = " " "A t r i p l e quoted s t r i n gdoes not need to be escaped at the end and" can have nested quotes " and whatnot . " " "

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Strings

>>> word = " h e l l o ">>> 2∗word + " world " # A r i t h m e t i c on s t r i n g sh e l l o h e l l o wor ld>>> pr in t word [ 0 ] + word [ 2 ] + word [ −1]h lo>>> # S t r i ngs are " immutable ". . . word [ 0 ] = ’H ’Traceback ( most recent c a l l l a s t ) :

F i l e "<s td in >" , l i n e 1 , in ?TypeError : ob jec t doesnt suppor t i tem assignment>>> len ( word ) # The leng th o f the s t r i n g5>>> s = u ’ Unicode s t r i n g s ! ’ # unicode s t r i n g>>> # Raw s t r i n g s ( note the lead ing ’ r ’ ). . . raw_s = r ’A \ LaTeX s t r i n g $ \ alpha \ nu$ ’

Prabhu Ramachandran Introduction to Python

Page 13: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

More on strings>>> a = ’ h e l l o wor ld ’>>> a . s t a r t s w i t h ( ’ h e l l ’ )True>>> a . endswith ( ’ l d ’ )True>>> a . upper ( )’HELLO WORLD’>>> a . upper ( ) . lower ( )’ h e l l o wor ld ’>>> a . s p l i t ( )[ ’ h e l l o ’ , ’ wor ld ’ ]>>> ’ ’ . j o i n ( [ ’ a ’ , ’ b ’ , ’ c ’ ] )’ abc ’>>> x , y = 1 , 1.234>>> ’ x i s %s , y i s %s ’%(x , y )’ x i s 1 , y i s 1.234 ’>>> # could a lso do : ’ x i s %d , y i s %f ’%(x , y )

See http://docs.python.org/lib/typesseq-strings.html

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Lists

Lists are mutable

Items are indexed at 0

Last element is -1

Length: len(list)

Prabhu Ramachandran Introduction to Python

Page 14: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

List: examples

>>> a = [ ’spam ’ , ’ eggs ’ , 100 , 1234]>>> a [ 0 ]’spam ’>>> a [ 3 ]1234>>> a[ −2]100>>> a [1: −1][ ’ eggs ’ , 100]>>> a [ : 2 ] + [ ’ bacon ’ , 2∗2][ ’spam ’ , ’ eggs ’ , ’ bacon ’ , 4 ]>>> 2∗a [ : 3 ] + [ ’Boe ! ’ ][ ’ spam ’ , ’ eggs ’ , 100 , ’spam ’ , ’ eggs ’ , 100 , ’Boe ! ’ ]

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Lists are mutable

>>> a = [ ’spam ’ , ’ eggs ’ , 100 , 1234]>>> a [ 2 ] = a [ 2 ] + 23>>> a[ ’spam ’ , ’ eggs ’ , 123 , 1234]>>> a = [ ’spam ’ , ’ eggs ’ , 100 , 1234]>>> a [ 0 : 2 ] = [1 , 12] # Replace some items>>> a[1 , 12 , 123 , 1234]>>> a [ 0 : 2 ] = [ ] # Remove some items>>> a[123 , 1234]

Prabhu Ramachandran Introduction to Python

Page 15: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

List methods

>>> a = [ ’spam ’ , ’ eggs ’ , 100 , 1234]>>> len ( a )4>>> a . reverse ( )>>> a[1234 , 100 , ’ eggs ’ , ’ spam ’ ]>>> a . append ( [ ’ x ’ , 1 ] ) # L i s t s can conta in l i s t s .>>> a[1234 , 100 , ’ eggs ’ , ’ spam ’ , [ ’ x ’ , 1 ] ]>>> a . extend ( [ 1 , 2 ] ) # Extend the l i s t .>>> a[1234 , 100 , ’ eggs ’ , ’ spam ’ , [ ’ x ’ , 1 ] , 1 , 2 ]

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Tuples

>>> t = (0 , 1 , 2)>>> pr in t t [ 0 ] , t [ 1 ] , t [ 2 ] , t [ −1] , t [ −2] , t [ −3]0 1 2 2 1 0>>> # Tuples are immutable !. . . t [ 0 ] = 1Traceback ( most recent c a l l l a s t ) :

F i l e "<s td in >" , l i n e 1 , in ?TypeError : ob jec t doesn ’ t suppor t i tem assignment

Prabhu Ramachandran Introduction to Python

Page 16: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Dictionaries

Associative arrays/mappings

Indexed by “keys” (keys must be immutable)

dict[key] = value

keys() returns all keys of the dict

values() returns the values of the dict

has_key(key) returns if key is in the dict

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Dictionaries: example

>>> t e l = { ’ j ack ’ : 4098 , ’ sape ’ : 4139}>>> t e l [ ’ guido ’ ] = 4127>>> t e l{ ’ sape ’ : 4139 , ’ guido ’ : 4127 , ’ j ack ’ : 4098}>>> t e l [ ’ j ack ’ ]4098>>> del t e l [ ’ sape ’ ]>>> t e l [ ’ i r v ’ ] = 4127>>> t e l{ ’ guido ’ : 4127 , ’ i r v ’ : 4127 , ’ j ack ’ : 4098}>>> t e l . keys ( )[ ’ guido ’ , ’ i r v ’ , ’ j ack ’ ]>>> t e l . has_key ( ’ guido ’ )True

Prabhu Ramachandran Introduction to Python

Page 17: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Control flow

Control flow is primarily achieved using the following:

if/elif/else

for

while

break, continue, else may be used to further control

pass can be used when syntactically necessary but nothingneeds to be done

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

If example

x = i n t ( raw_input ( " Please enter an i n t e g e r : " ) )# raw_input asks the user f o r i npu t .# i n t ( ) typecasts the r e s u l t i n g s t r i n g i n t o an i n t .i f x < 0:

x = 0pr in t ’ Negative changed to zero ’

e l i f x == 0:pr in t ’ Zero ’

e l i f x == 1:pr in t ’ S ing le ’

else :pr in t ’ More ’

Prabhu Ramachandran Introduction to Python

Page 18: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

If example

>>> a = [ ’ ca t ’ , ’ window ’ , ’ de fenes t ra te ’ ]>>> i f ’ ca t ’ in a :. . . pr in t "meaw". . .

meaw>>> pets = { ’ ca t ’ : 1 , ’ dog ’ : 2 , ’ croc ’ : 10}>>> i f ’ croc ’ in pets :. . . pr in t pets [ ’ croc ’ ]. . .10

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

for example

>>> a = [ ’ ca t ’ , ’ window ’ , ’ de fenes t ra te ’ ]>>> for x in a :. . . pr in t x , len ( x ). . .ca t 3window 6defenes t ra te 12>>> kn igh ts = { ’ ga l lahad ’ : ’ the pure ’ ,. . . ’ r ob in ’ : ’ the brave ’ }>>> for k , v in kn igh ts . i t e r i t e m s ( ) :. . . pr in t k , v. . .ga l lahad the purerob in the brave

Prabhu Ramachandran Introduction to Python

Page 19: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

for and range example

>>> for i in range ( 5 ) :. . . pr in t i , i ∗ i. . .0 01 12 43 94 16>>> a = [ ’ a ’ , ’ b ’ , ’ c ’ ]>>> for i , x in enumerate ( a ) :. . . pr in t i , x. . .0 ’ a ’1 ’ b ’2 ’ c ’

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

while example

>>> # Fibonacc i se r i es :. . . # the sum of two elements de f ines the next. . . a , b = 0 , 1>>> while b < 10:. . . pr in t b. . . a , b = b , a+b. . .112358

Prabhu Ramachandran Introduction to Python

Page 20: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Functions

Support default and keyword arguments

Scope of variables in the function is local

Mutable items are passed by reference

First line after definition may be a documentation string(recommended!)

Function definition and execution defines a name bound to thefunction

You can assign a variable to a function!

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Functions: examples

>>> def f i b ( n ) : # w r i t e F ibonacc i se r i es up to n. . . " " " P r i n t a Fibonacc i se r i es up to n . " " ". . . a , b = 0 , 1. . . while b < n :. . . pr in t b ,. . . a , b = b , a+b. . .>>> # Now c a l l the f u n c t i o n we j u s t def ined :. . . f i b (2000)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597>>> f = f i b # Assign a v a r i a b l e to a f u n c t i o n>>> f (10)1 1 2 3 5 8

Prabhu Ramachandran Introduction to Python

Page 21: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Functions: default arguments

def ask_ok ( prompt , r e t r i e s =4 , compla in t= ’ Yes or no ! ’ ) :while True :

ok = raw_input ( prompt )i f ok in ( ’ y ’ , ’ ye ’ , ’ yes ’ ) :

return Truei f ok in ( ’ n ’ , ’ no ’ , ’ nop ’ , ’ nope ’ ) :

return Falser e t r i e s = r e t r i e s − 1i f r e t r i e s < 0:

raise IOError , ’ bad user ’pr in t compla in t

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Functions: keyword arguments

def p a r r o t ( vo l tage , s t a t e = ’ a s t i f f ’ ,ac t i on = ’voom ’ , type= ’ Norwegian Blue ’ ) :

pr in t "−− This p a r r o t wouldn ’ t " , ac t ion ,pr in t " i f you put " , vo l tage , " Vo l t s through i t . "pr in t "−− Lovely plumage , the " , typepr in t "−− I t ’ s " , s ta te , " ! "

p a r r o t (1000)p a r r o t ( ac t i on = ’VOOOOOM’ , vo l tage = 1000000)p a r r o t ( ’ a thousand ’ , s t a t e = ’ pushing up the da i s i es ’ )p a r r o t ( ’ a m i l l i o n ’ , ’ b e r e f t o f l i f e ’ , ’ jump ’ )

Prabhu Ramachandran Introduction to Python

Page 22: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Modules

Define variables, functions and classes in a file with a .pyextension

This file becomes a module!Modules are searched in the following:

Current directoryStandard: /usr/lib/python2.3/site-packages/ etc.Directories specified in PYTHONPATHsys.path: current path settings (from the sys module)

The import keyword “loads” a module

One can also use:from module import name1, name2, name2where name1 etc. are names in the module, “module”

from module import * — imports everything frommodule, use only in interactive mode

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Modules: example

# −−− foo . py −−−

some_var = 1def f i b ( n ) : # w r i t e F ibonacc i se r i es up to n

" " " P r i n t a Fibonacc i se r i es up to n . " " "a , b = 0 , 1while b < n :

pr in t b ,a , b = b , a+b

# EOF

>>> import foo>>> foo . f i b (10)1 1 2 3 5 8>>> foo . some_var1

Prabhu Ramachandran Introduction to Python

Page 23: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Namespaces

A mapping from names to objects

Modules introduce a namespace

So do classes

The running script’s namespace is __main__

A modules namespace is identified by its name

The standard functions (like len) are in the __builtin__namespace

Namespaces help organize different names and their bindingsto different objects

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Exceptions

Python’s way of notifying you of errors

Several standard exceptions: SyntaxError, IOError etc.

Users can also raise errors

Users can create their own exceptions

Exceptions can be “caught” via try/except blocks

Prabhu Ramachandran Introduction to Python

Page 24: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Exception: examples

>>> 10 ∗ ( 1 / 0 )Traceback ( most recent c a l l l a s t ) :

F i l e "<s td in >" , l i n e 1 , in ?ZeroD iv i s i onEr ro r : i n t e g e r d i v i s i o n or modulo by zero>>> 4 + spam∗3Traceback ( most recent c a l l l a s t ) :

F i l e "<s td in >" , l i n e 1 , in ?NameError : name ’spam ’ is not def ined>>> ’ 2 ’ + 2Traceback ( most recent c a l l l a s t ) :

F i l e "<s td in >" , l i n e 1 , in ?TypeError : cannot concatenate ’ s t r ’ and ’ i n t ’ ob jec ts

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Exception: examples

>>> while True :. . . t ry :. . . x = i n t ( raw_input ( " Enter a number : " ) ). . . break. . . except ValueError :. . . pr in t " I n v a l i d number , t r y again . . . ". . .>>> # To ra i se except ions. . . raise ValueError , " your e r r o r message "Traceback ( most recent c a l l l a s t ) :

F i l e "<s td in >" , l i n e 2 , in ?ValueError : your e r r o r message

Prabhu Ramachandran Introduction to Python

Page 25: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes: the big picture

Lets you create new data types

Class is a template for an object belonging to that class

Note: in Python a class is also an object

Instantiating a class creates an instance (an object)

An instance encapsulates the state (data) and behavior(methods)Allows you to define an inheritance hierarchy

“A Honda car is a car.”“A car is an automobile.”“A Python is a reptile.”

Programmers need to think OO

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes: what’s the big deal?

Lets you create objects that mimic a real problem beingsimulated

Makes problem solving more natural and elegant

Easier to create code

Allows for code-reuse

Polymorphism

Prabhu Ramachandran Introduction to Python

Page 26: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Class definition and instantiation

Class definitions when executed create class objects

Instantiating the class object creates an instance of the class

class Foo ( ob jec t ) :pass

# c lass ob jec t created .# Create an ins tance of Foo .f = Foo ( )# Can assign an a t t r i b u t e to the ins tancef . a = 100pr in t f . a100

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes . . .

All attributes are accessed via the object.attributesyntax

Both class and instance attributes are supported

Methods represent the behavior of an object: crudely think ofthem as functions “belonging” to the object

All methods in Python are “virtual”

Inheritance through subclassing

Multiple inheritance is supportedNo special public and private attributes: only goodconventions

object.public(): publicobject._private() & object.__priv(): non-public

Prabhu Ramachandran Introduction to Python

Page 27: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes: examples

class MyClass ( ob jec t ) :" " " Example c lass ( t h i s i s the c lass docs t r i ng ) . " " "i = 12345 # A c lass a t t r i b u t edef f ( s e l f ) :

" " " This i s the method docs t r i ng " " "return ’ h e l l o wor ld ’

>>> a = MyClass ( ) # creates an ins tance>>> a . f ( )’ h e l l o wor ld ’>>> # a . f ( ) i s equ iva len t to MyClass . f ( a ). . . # This a lso exp la ins why f has a ’ s e l f ’ argument .. . . MyClass . f ( a )’ h e l l o wor ld ’

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes (continued)

self is conventionally the first argument for a method

In previous example, a.f is a method object

When a.f is called, it is passed the instance a as the firstargument

If a method called __init__ exists, it is called when theobject is created

If a method called __del__ exists, it is called before theobject is garbage collected

Instance attributes are set by simply “setting” them in selfOther special methods (by convention) like __add__ let youdefine numeric types:http://docs.python.org/ref/specialnames.html

http://docs.python.org/ref/numeric-types.html

Prabhu Ramachandran Introduction to Python

Page 28: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes: examples

class Bag ( MyClass ) : # Shows how to der i ve c lassesdef _ _ i n i t _ _ ( s e l f ) : # c a l l e d on ob jec t c rea t i on .

s e l f . data = [ ] # an ins tance a t t r i b u t edef add ( s e l f , x ) :

s e l f . data . append ( x )def addtwice ( s e l f , x ) :

s e l f . add ( x )s e l f . add ( x )

>>> a = Bag ( )>>> a . f ( ) # I n h e r i t e d method’ h e l l o wor ld ’>>> a . add ( 1 ) ; a . addtwice ( 2 )>>> a . data[1 , 2 , 2 ]

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Derived classes

Call the parent’s __init__ if needed

If you don’t need a new constructor, no need to define it insubclass

Can also use the super built-in function

class AnotherBag (Bag ) :def _ _ i n i t _ _ ( s e l f ) :

# Must c a l l parent ’ s _ _ i n i t _ _ e x p l i c i t l yBag . _ _ i n i t _ _ ( s e l f )# A l t e r n a t i v e l y use t h i s :super ( AnotherBag , s e l f ) . _ _ i n i t _ _ ( )# Now setup any more data .s e l f . more_data = [ ]

Prabhu Ramachandran Introduction to Python

Page 29: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Classes: polymorphism

class Drawable ( ob jec t ) :def draw ( s e l f ) :

# Just a s p e c i f i c a t i o n .pass

class Square ( Drawable ) :def draw ( s e l f ) :

# draw a square .class C i r c l e ( Drawable ) :

def draw ( s e l f ) :# draw a c i r c l e .

class A r t i s t ( Drawable ) :def draw ( s e l f ) :

for obj in s e l f . drawables :ob j . draw ( )

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Stand-alone scripts

Consider a file f.py:

# ! / usr / b in / env python" " " Module l e v e l documentation . " " "# F i r s t l i n e t e l l s the s h e l l t h a t i t should use Python# to i n t e r p r e t the code i n the f i l e .def f ( ) :

pr in t " f "

# Check i f we are running standalone or as module .# When imported , __name__ w i l l not be ’ __main__ ’i f __name__ == ’ __main__ ’ :

# This i s not executed when f . py i s imported .f ( )

Prabhu Ramachandran Introduction to Python

Page 30: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

More IPython features

Input and output caching:In: a list of all entered inputOut: a dict of all output_, __, __ are the last three results as is _N%hist [-n] macro shows previous history, -n suppressesline number information

Log the session using %logstart, %logon and %logoff%run [options] file[.py] – running Python code

%run -d [-b<N>]: debug script with pdb N is the linenumber to break at (defaults to 1)%run -t: time the script%run -p: Profile the script

%prun runs a statement/expression under the profiler%macro [options] macro_name n1-n2 n3-n4 n6save specified lines to a macro with name macro_name

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

More IPython features . . .

%edit [options] [args]: edit lines of code or filespecified in editor (configure editor via $EDITOR)

%cd changes directory, see also%pushd, %popd, %dhist

Shell access!command runs a shell command and returns its outputfiles = %sx ls or files = !ls sets files to allresult of the ls command%sx is quiet!ls $files passes the files variable to the shellcommand%alias alias_name cmd creates an alias for a systemcommand

%colors lets you change the color scheme toNoColor, Linux, LightBG

Prabhu Ramachandran Introduction to Python

Page 31: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

More IPython features . . .

Use ; at the end of a statement to suppress printing output

%who, %whos: print information on variables

%save [options] filename n1-n2 n3-n4: savelines to a file

%time statement: Time execution of a Python statementor expression

%timeit [-n<N> -r<R> [-t|-c]] statement: timeexecution using Python’s timeit module

Can define and use profiles to setup IPython differently:math, scipy, numeric, pysh etc.

%magic: Show help on all magics

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

File handling

>>> # Reading f i l e s :. . . f = open ( ’ / path / to / f i le_name ’ )>>> data = f . read ( ) # Read e n t i r e f i l e .>>> l i n e = f . r ead l i ne ( ) # Read one l i n e .>>> # Read e n t i r e f i l e appending each l i n e i n t o a l i s t. . . l i n e s = f . read l i nes ( )>>> f . c lose ( ) # close the f i l e .>>> # Wr i t i ng f i l e s :. . . f = open ( ’ / path / to / f i le_name ’ , ’w ’ )>>> f . w r i t e ( ’ h e l l o wor ld \ n ’ )

tell(): returns int of current position

seek(pos): moves current position to specified byte

Call close() when done using a file

Prabhu Ramachandran Introduction to Python

Page 32: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Math

math module provides basic math routines for floats

cmath module provides math routies for complex numbers

random: provides pseudo-random number generators forvarious distributions

These are always available and part of the standard library

More serious math is provided by the NumPy/SciPy modules– these are not standard and need to be installed separately

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Timing and profiling

Timing code: use the time module

Read up on time.time() and time.clock()

timeit: is a better way of doing timing

IPython has handy time and timeit macros (typetimeit? for help)

IPython lets you debug and profile code via the run macro(type run? on the prompt to learn more)

Prabhu Ramachandran Introduction to Python

Page 33: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous

Odds and ends

dir([object]) function: attributes of given object

type(object): returns type information

str(), repr(): convert object to string representation

isinstance, issubclass

assert statements let you do debugging assertions in code

csv module: reading and writing CSV files

pickle: lets you save and load Python objects (serialization)

os.path: common path manipulations

Check out the Python Library reference:http://docs.python.org/lib/lib.html

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

The numpy module

Manipulating large Python lists for scientific computing is slow

Most complex computations can be reduced to a few standardoperationsThe numpy module provides:

An efficient and powerful array type for various common datatypesAbstracts out the most commonly used standard operations onarrays

Numeric was the first, then came numarray. numpy is thelatest and is the future

This course uses numpy and only covers the absolute basics

Prabhu Ramachandran Introduction to Python

Page 34: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Basic concepts

numpy arrays are of a fixed size (arr.size) and have thesame type (arr.dtype)numpy arrays may have arbitrary dimensionalityThe shape of an array is the extent (length) of the array alongeach dimensionThe rank(arr) of an array is the “dimensionality” of thearrayThe arr.itemsize is the number of bytes (8-bits) used foreach element of the arrayNote: The shape and rank may change as long as thesize of the array is fixedNote: len(arr) != arr.size in generalNote: By default array operations are performed elementwiseIndices start from 0

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Examples of numpy

# Simple ar ray math example>>> from numpy import ∗>>> a = ar ray ( [ 1 , 2 , 3 , 4 ] )>>> b = ar ray ( [ 2 , 3 , 4 , 5 ] )>>> a + b # Element wise a d d i t i o n !ar ray ( [ 3 , 5 , 7 , 9 ] )

>>> pr in t pi , e # Pi and e are def ined .3.14159265359 2.71828182846# Create ar ray from 0 to 10>>> x = arange ( 0 . 0 , 10.0 , 0 .05)>>> x ∗= 2∗ p i /10 # m u l t i p l y ar ray by sca la r valuear ray ( [ 0 . , 0 . 0 3 1 4 , . . . , 6 . 2 5 2 ] )# apply f u nc t i o n s to ar ray .>>> y = s in ( x )

Prabhu Ramachandran Introduction to Python

Page 35: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

More examples of numpy# Size , shape , rank , type etc .>>> x = ar ray ( [ 1 . , 2 , 3 , 4 ] )>>> s ize ( x )4>>> x . dtype # or x . dtype . char’ d ’>>> x . shape( 4 , )>>> pr in t rank ( x ) , x . i tems ize1 8>>> x . t o l i s t ( )[ 1 . 0 , 2 .0 , 3 .0 , 4 . 0 ]# Array index ing>>> x [ 0 ] = 10>>> pr in t x [ 0 ] , x [ −1]10.0 4.0

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Multi-dimensional arrays

>>> a = ar ray ( [ [ 0 , 1 , 2 , 3 ] ,. . . [ 10 ,11 ,12 ,13 ] ] )>>> a . shape # ( rows , columns )(2 , 4)# Accessing and s e t t i n g values>>> a [ 1 , 3 ]13>>> a [ 1 , 3 ] = −1>>> a [ 1 ] # The second rowar ray ( [10 ,11 ,12 , −1] )

# F l a t t e n / r a ve l ar rays to 1D arrays>>> a . f l a t # or rave l ( a )ar ray ( [0 ,1 ,2 ,3 ,10 ,11 ,12 , −1] )# Note : f l a t re ferences o r i g i n a l memory

Prabhu Ramachandran Introduction to Python

Page 36: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Slicing arrays

>>> a = ar ray ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] )>>> a [ 0 , 1 : 3 ]a r ray ( [ 2 , 3 ] )>>> a [ 1 : , 1 : ]a r ray ( [ [ 5 , 6 ] ,

[ 8 , 9 ] ] )>>> a [ : , 2 ]a r ray ( [ 3 , 6 , 9 ] )# S t r i d i n g . . .>>> a [ 0 : : 2 , 0 : : 2 ]a r ray ( [ [ 1 , 3 ] ,

[ 7 , 9 ] ] )# A l l these s l i c e s are re ferences to the same memory !

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Array creation functions

array(object, dtype=None,copy=1,order=None, subok=0,ndmin=0)

arange(start, stop=None, step=1,dtype=None)

linspace(start, stop, num=50,endpoint=True, retstep=False)

ones(shape, dtype=None, order=’C’)

zeros((d1,...,dn),dtype=float,order=’C’)

identity(n)

empty((d1,...,dn),dtype=float,order=’C’)

ones_like(x), zeros_like(x), empty_like(x)

Prabhu Ramachandran Introduction to Python

Page 37: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Array math

Basic elementwise math (given two arrays a, b):a + b → add(a, b)a - b, → subtract(a, b)a * b, → multiply(a, b)a / b, → divide(a, b)a % b, → remainder(a, b)a ** b, → power(a, b)

Inplace operators: a += b, or add(a, b, a) etc.Logical operations: equal (==), not_equal (!=),less (<), greater (>) etc.Trig and other functions: sin(x), arcsin(x),sinh(x), exp(x), sqrt(x) etc.sum(x, axis=0), product(x, axis=0): sum andproduct of array elementsdot(a, b)

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Advanced

Only scratched the surface of numpy

Ufunc methods: reduce, accumulate, outer,reduceat

Typecasting

More functions: take, choose, where, compress,concatenate

Array broadcasting and None

Prabhu Ramachandran Introduction to Python

Page 38: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

About matplotlib

Easy to use, scriptable, “Matlab-like” 2D plotting

Publication quality figures and interactive capabilities

Plots, histograms, power spectra, bar charts, errorcharts,scatterplots, etc.

Also does polar plots, maps, contours

Support for simple TEX markup

Multiple output backends (images, EPS, SVG, wx, Agg, Tk,GTK)

Cross-platform: Linux, Win32, Mac OS X

Good idea to use via IPython: ipython -pylab

From scripts use: import pylab

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

More information

More information here: http://matplotlib.sf.net

http://matplotlib.sf.net/tutorial.html

http://matplotlib.sf.net/screenshots.html

Prabhu Ramachandran Introduction to Python

Page 39: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Basic plotting with matplotlib

>>> x = arange (0 , 2∗pi , 0 .05)>>> p l o t ( x , s in ( x ) ) # Same as p l o t ( x , s in ( x ) , ’ b− ’ )>>> p l o t ( x , s in ( x ) , ’ ro ’ )>>> ax is ( [ 0 ,2∗ pi , −1 ,1])>>> x l a b e l ( r ’ $ \ ch i$ ’ , c o l o r = ’ g ’ )>>> y l a b e l ( r ’ s i n ( $ \ ch i$ ) ’ , c o l o r = ’ r ’ )>>> t i t l e ( ’A simple f i g u r e ’ , f o n t s i z e =20)>>> save f ig ( ’ / tmp / t e s t . eps ’ )# M u l t i p l e p l o t s i n one f i g u r e>>> t = arange ( 0 . 0 , 5 .2 , 0 .2 )# red dashes , blue squares and green t r i a n g l e s>>> p l o t ( t , t , ’ r−− ’ , t , t ∗∗2 , ’ bs ’ , t , t ∗∗3 , ’ g^ ’ )

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Basic plotting . . .

# Set p r o p e r t i e s o f ob jec ts :>>> p l o t ( x , s in ( x ) , l i n e w i d t h =2.0 , co l o r = ’ r ’ )>>> l , = p l o t ( x , s in ( x ) )>>> setp ( l , l i n e w i d t h =2.0 , co l o r = ’ r ’ )>>> l . s e t _ l i n e w i d t h ( 2 . 0 ) ; l . se t_co lo r ( ’ r ’ )>>> draw ( ) # Redraws cu r ren t f i g u r e .>>> setp ( l ) # P r i n t s a v a i l a b l e p r o p e r t i e s>>> close ( ) # Closes the f i g u r e .# M u l t i p l e f i g u r e s :>>> f i g u r e ( 1 ) ; p l o t ( x , s in ( x ) )>>> f i g u r e ( 2 ) ; p l o t ( x , tanh ( x ) )>>> f i g u r e ( 1 ) ; t i t l e ( ’ Easy as 1 ,2 ,3 ’ )

Prabhu Ramachandran Introduction to Python

Page 40: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Basic plotting . . .

>>> f i g u r e ( 1 )>>> subp lo t (211) # Same as subp lo t (2 , 1 , 1)>>> p l o t ( x , cos (5∗x )∗exp(−x ) )>>> subp lo t (2 , 1 , 2)>>> p l o t ( x , cos (5∗x ) , ’ r−− ’ , l a b e l = ’ cosine ’ )>>> p l o t ( x , s in (5∗x ) , ’ g−− ’ , l a b e l = ’ s ine ’ )>>> legend ( ) # Or legend ( [ ’ cosine ’ , ’ s ine ’ ] )>>> t e x t (1 ,0 , ’ ( 1 ,0 ) ’ )>>> axes = gca ( ) # Current ax is>>> f i g = gcf ( ) # Current f i g u r e

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

X-Y plot

Example code

t1 = arange ( 0 . 0 , 5 .0 , 0 .1 )t2 = arange ( 0 . 0 , 5 .0 , 0 .02)t3 = arange ( 0 . 0 , 2 .0 , 0 .01)subp lo t (211)p l o t ( t1 , cos(2∗ p i∗ t1 )∗exp(− t1 ) , ’ bo ’ ,

t2 , cos(2∗ p i∗ t2 )∗exp(− t2 ) , ’ k ’ )g r i d ( True )t i t l e ( ’A t a l e o f 2 subp lo ts ’ )y l a b e l ( ’Damped ’ )subp lo t (212)p l o t ( t3 , cos(2∗ p i∗ t3 ) , ’ r−− ’ )g r i d ( True )x l a b e l ( ’ t ime ( s ) ’ )y l a b e l ( ’Undamped ’ )

Prabhu Ramachandran Introduction to Python

Page 41: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Errorbar

Example code

t = arange ( 0 . 1 , 4 , 0 .1 )s = exp(− t )e = 0.1∗abs ( randn ( len ( s ) ) )f = 0.1∗abs ( randn ( len ( s ) ) )g = 2∗eh = 2∗ fe r r o rba r ( t , s , [ e , g ] , f , fmt= ’ o ’ )x l a b e l ( ’ Distance (m) ’ )y l a b e l ( ’ Height (m) ’ )t i t l e ( ’Mean and standard e r r o r ’ \

’ as a f u n c t i o n o f d is tance ’ )

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Semi-log and log-log plots

Example code

dt = 0.01t = arange ( dt , 20.0 , d t )subp lo t (311)semilogy ( t , exp(− t / 5 . 0 ) )y l a b e l ( ’ semilogy ’ )g r i d ( True )subp lo t (312)semilogx ( t , s in (2∗ p i∗ t ) )y l a b e l ( ’ semilogx ’ )g r i d ( True )# minor g r i d on toogca ( ) . xax is . g r i d ( True , which= ’ minor ’ )subp lo t (313)l og log ( t , 20∗exp(− t / 1 0 . 0 ) , basex=4)g r i d ( True )y l a b e l ( ’ l og log base 4 on x ’ )

Prabhu Ramachandran Introduction to Python

Page 42: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Histogram

Example code

mu, sigma = 100 , 15x = mu + sigma∗randn (10000)# the histogram of the datan , bins , patches = h i s t ( x , 100 , normed=1)# add a ’ best f i t ’ l i n ey = normpdf ( bins , mu, sigma )l = p l o t ( bins , y , ’ r−− ’ , l i n e w i d t h =2)x l im (40 , 160)x l a b e l ( ’ Smarts ’ )y l a b e l ( ’P ’ )t i t l e ( r ’ $ \ rm { IQ : } \ / \mu=100 , \ / \ sigma=15$ ’ )

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Bar charts

Example code

N = 5menMeans = (20 , 35 , 30 , 35 , 27)menStd = ( 2 , 3 , 4 , 1 , 2)# the x l o c a t i o n s f o r the groupsind = arange (N)# the width o f the barswidth = 0.35p1 = bar ( ind , menMeans , width ,

co l o r = ’ r ’ , ye r r =menStd )womenMeans = (25 , 32 , 34 , 20 , 25)womenStd = ( 3 , 5 , 2 , 3 , 3)p2 = bar ( ind+width , womenMeans , width ,

co l o r = ’ y ’ , ye r r =womenStd )y l a b e l ( ’ Scores ’ )t i t l e ( ’ Scores by group and gender ’ )x t i c k s ( ind+width ,

( ’G1 ’ , ’G2 ’ , ’G3 ’ , ’G4 ’ , ’G5 ’ ) )x l im(−width , len ( ind ) )y t i c k s ( arange (0 ,41 ,10 ) )legend ( ( p1 [ 0 ] , p2 [ 0 ] ) ,

( ’Men ’ , ’Women ’ ) , shadow=True )

Prabhu Ramachandran Introduction to Python

Page 43: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Pie charts

Example code

# make a square f i g u r e and axesf i g u r e (1 , f i g s i z e = (8 ,8 ) )ax = axes ( [ 0 . 1 , 0 .1 , 0 .8 , 0 . 8 ] )l a b e l s = ’ Frogs ’ , ’ Hogs ’ , ’ Dogs ’ , ’ Logs ’f r acs = [15 ,30 ,45 , 10]explode =(0 , 0.05 , 0 , 0)p ie ( f racs , explode=explode , l a b e l s = labe ls ,

autopct= ’ %1.1 f%%’ , shadow=True )t i t l e ( ’ Raining Hogs and Dogs ’ ,

bbox ={ ’ f aceco lo r ’ : ’ 0.8 ’ , ’ pad ’ : 5 } )

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Scatter plots

Example code

N = 30x = 0.9∗ rand (N)y = 0.9∗ rand (N)# 0 to 10 po in t rad iusesarea = p i∗(10 ∗ rand (N))∗∗2volume = 400 + rand (N)∗450s c a t t e r ( x , y , s=area , marker= ’ o ’ , c=volume ,

alpha =0.75)x l a b e l ( r ’ $ \ De l ta_ i$ ’ , s i ze= ’ x−l a rge ’ )y l a b e l ( r ’ $ \ Del ta_ { i +1}$ ’ , s i ze= ’ x−l a rge ’ )t i t l e ( r ’ Volume and percent change ’ )g r i d ( True )co lo rba r ( )save f ig ( ’ s c a t t e r ’ )

Prabhu Ramachandran Introduction to Python

Page 44: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Polar

Example code

f i g u r e ( f i g s i z e = (8 ,8 ) )ax = axes ( [ 0 . 1 , 0 .1 , 0 .8 , 0 . 8 ] , po la r=True ,

axisbg= ’ #d5de9c ’ )r = arange (0 ,1 ,0 .001)the ta = 2∗2∗p i∗rpo la r ( theta , r , co l o r = ’ #ee8d18 ’ , lw =3)# the rad ius o f the g r i d l a b e l ssetp ( ax . t h e t a g r i d l a b e l s , y =1.075)t i t l e ( r " $ \ the ta =4\ p i r " , f o n t s i z e =20)

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Contours

Example code

x = arange (−3.0 , 3 .0 , 0.025)y = arange (−2.0 , 2 .0 , 0.025)X, Y = meshgrid ( x , y )Z1 = b iva r ia te_norma l (X, Y, 1 .0 , 1 .0 , 0 .0 , 0 .0 )Z2 = b iva r ia te_norma l (X, Y, 1 .5 , 0 .5 , 1 , 1)# d i f f e r e n c e of GaussiansZ = 10.0 ∗ ( Z2 − Z1 )im = imshow (Z , i n t e r p o l a t i o n = ’ b i l i n e a r ’ ,

o r i g i n = ’ lower ’ ,cmap=cm. gray , ex ten t =(−3 ,3 ,−2 ,2))

l e v e l s = arange (−1.2 , 1 .6 , 0 .2 )# l a b e l every second l e v e lc l a b e l (CS, l e v e l s [ 1 : : 2 ] , i n l i n e =1 ,

fmt= ’ %1.1 f ’ , f o n t s i z e =14)CS = contour (Z , l eve l s ,

o r i g i n = ’ lower ’ ,l i n e w i d t h s =2 ,ex ten t =(−3 ,3 ,−2 ,2))

# make a co lo rba r f o r the contour l i n e sCB = co lo rba r (CS, sh r i nk =0.8 , extend= ’ both ’ )t i t l e ( ’ L ines wi th co lo rba r ’ )hot ( ) ; f l a g ( )

Prabhu Ramachandran Introduction to Python

Page 45: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Velocity vectors

Example code

X,Y = meshgrid ( arange (0 ,2∗ pi , . 2 ) ,arange (0 ,2∗ pi , . 2 ) )

U = cos (X)V = s in (Y)Q = qu iver (X [ : : 3 , : : 3 ] , Y [ : : 3 , : : 3 ] ,

U [ : : 3 , : : 3 ] , V [ : : 3 , : : 3 ] ,co l o r = ’ r ’ , u n i t s = ’ x ’ ,l i n e w i d t h s = (2 , ) ,edgecolors =( ’ k ’ ) ,headaxis length=5 )

qk = quiverkey (Q, 0 .5 , 0.03 , 1 , ’ 1 m/ s ’ ,f o n t p r o p e r t i e s ={ ’ weight ’ : ’ bold ’ } )

ax is ([ −1 , 7 , −1, 7 ] )t i t l e ( ’ t r i a n g u l a r head ; sca le ’ \

’ w i th x view ; b lack edges ’ )

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Maps

For details see http://matplotlib.sourceforge.net/screenshots/plotmap.py

Prabhu Ramachandran Introduction to Python

Page 46: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

NumPy Arrays Plotting: Matplotlib SciPy

Using SciPy

SciPy is Open Source software for mathematics, science, andengineering

import scipy

Built on NumPy

Provides modules for statistics, optimization, integration, linearalgebra, Fourier transforms, signal and image processing,genetic algorithms, ODE solvers, special functions, and more

Used widely by scientists world over

Details are beyond the scope of this tutorial

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Standard library

Very powerful

“Batteries included”Example standard modules taken from the tutorial

Operating system interface: osSystem, Command line arguments: sysRegular expressions: reMath: math, randomInternet access: urllib2, smtplibData compression: zlib, gzip, bz2, zipfile, andtarfileUnit testing: doctest and unittestAnd a whole lot more!

Check out the Python Library reference:http://docs.python.org/lib/lib.html

Prabhu Ramachandran Introduction to Python

Page 47: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Stdlib: examples

>>> import os>>> os . system ( ’ date ’ )F r i Jun 10 22:13:09 IST 20050>>> os . getcwd ( )’ / home / prabhu ’>>> os . ch d i r ( ’ / tmp ’ )>>> import os>>> d i r ( os )< re tu rns a l i s t o f a l l module func t ions >>>> help ( os )<extens ive manual page from module ’ s docs t r ings >

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Stdlib: examples

>>> import sys>>> # P r i n t the l i s t o f command l i n e args to Python. . . pr in t sys . argv[ ’ ’ ]>>> import re # Regular expressions>>> re . f i n d a l l ( r ’ \ b f [ a−z ]∗ ’ ,. . . ’ which f o o t or hand f e l l f a s t e s t ’ )[ ’ f o o t ’ , ’ f e l l ’ , ’ f a s t e s t ’ ]>>> re . sub ( r ’ ( \ b [ a−z ] + ) \1 ’ , r ’ \1 ’ ,. . . ’ ca t i n the the hat ’ )’ ca t i n the hat ’

Prabhu Ramachandran Introduction to Python

Page 48: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Stdlib: examples

>>> import math>>> math . cos ( math . p i / 4 .0 )0.70710678118654757>>> math . log (1024 , 2)10.0>>> import random>>> random . choice ( [ ’ apple ’ , ’ pear ’ , ’ banana ’ ] )’ pear ’

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Stdlib: examples

>>> import u r l l i b 2>>> f = u r l l i b 2 . ur lopen ( ’ h t t p : / / www. python . org / ’ )>>> pr in t f . read (100)<!DOCTYPE html PUBLIC " − / /W3C/ / DTD HTML 4.01 T r a n s i t i o n a l / / EN"><?xml−s t y l eshee t h re f = " . / css / h t2html

Prabhu Ramachandran Introduction to Python

Page 49: Py tut-handout

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Stdlib: examples

>>> import z l i b>>> s = ’ w i tch which has which wi tches w r i s t watch ’>>> len ( s )41>>> t = z l i b . compress ( s )>>> len ( t )37>>> z l i b . decompress ( t )’ w i tch which has which wi tches w r i s t watch ’>>> z l i b . crc32 ( t )−1438085031

Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library

Quick Tour

Summary

Introduced Python

Basic syntax

Basic types and data structures

Control flow

Functions

Modules

Exceptions

Classes

Standard library

Prabhu Ramachandran Introduction to Python