Download as pdf or txt
Download as pdf or txt
You are on page 1of 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 Python Tutorial Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous Numerics & Plotting NumPy Arrays Plotting: Matplotlib SciPy Standard library Quick Tour
Prabhu Ramachandran Introduction to Python

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 Pythons 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/doc Free Tutorials:
Ofcial Python tutorial:

http://docs.python.org/tut/tut.html Byte of Python: http://www.byteofpython.info/ Dive into Python: http://diveintopython.org/

Prabhu Ramachandran

Introduction to Python

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 cant 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 in 1998 . . . I quickly fell in love with Python programming which is a remarkable statement to make about a programming language. If I had not seen others with the same view, I might have seriously doubted my sanity. Travis Oliphant (creator of NumPy)

Prabhu Ramachandran

Introduction to Python

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 small programs Can do much more than just array and math
Wrap large C++ codes Build large code bases via SCons Interactive data analysis/plotting Parallel application Job scheduling on a custom cluster Miscellaneous 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++/FORTRAN extensions

Prabhu Ramachandran

Introduction to Python

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-edged programming language Please read the tutorial It is very well written and can be read in one afternoon

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 paradigm down your throat!

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Preliminaries . . .

Will follow the Ofcial Python tutorial No lexical blocking Indentation species scope Leads to easier to read code!

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 ow, functions Modules, exceptions, classes Miscellaneous

IPython
Recommended interpreter, IPython:

http://ipython.scipy.org Better than the default Python shell Supports tab completion by default Easier object introspection Shell access! Command system to allow extending its own behavior Supports history (across sessions) and logging Can be embedded in your own Python code Support for macros A exible framework for your own custom interpreter Other miscellaneous conveniences Well get back to this later
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Basic IPython features


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

TAB completion: Type object_name.<TAB> to see list of options


Also completes on le and directory names

object? shows docstring/help for any Python object object?? presents more docs (and source if possible) Debugging with %pdb magic: pops up pdb on errors Access history (saved over earlier sessions also)
Use <UpArrow>: move up history Use <Ctrl-r> string: search history backwards Use 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 ow, functions Modules, exceptions, classes Miscellaneous

Basic concepts
Dynamically typed Assignments need not specify a type a a a a = = = = 1 1.1 " foo " SomeClass ( )

Comments: a = 1 # In l i n e comments # Comment i n a l i n e t o i t s e l f . a = " # T h i s i s n o t a comment ! "

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Basic concepts

No lexical scoping Scope determined by indentation f o r i i n range ( 1 0 ) : print " i n s i d e loop : " , # Do something i n t h e l o o p . print i , i i p r i n t " l o o p i s done ! " # T h i s i s o u t s i d e t h e l o o p ! 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 ow, functions Modules, exceptions, classes Miscellaneous

Basic types

Basic objects: numbers (oat, 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

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 the general 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 ow, 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 has methods (behavior) Together this lets one create representation of real things on the computer Programmers then create objects and manipulate them through their methods to get things done In Python everything is essentially an object you dont have to worry about it

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Numbers

>>> a = 1 # I n t . >>> l = 1000000L # Long >>> e = 1.01325 e5 # f l o a t >>> f = 3.14159 # f l o a t >>> c = 1+1 j # Complex ! >>> p r i n t f c / a (3.14159+3.14159 j ) >>> p r i n t c . r e a l , c . imag 1.0 1.0 >>> abs ( c ) 1.4142135623730951

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Boolean

>>> t >>> f False >>> f True >>> f False

= True = not t or t and t

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Strings

s = this is a string s = T h i s one has " quotes " i n s i d e ! s = " The r e v e r s e w i t h s i n g l e quotes i n s i d e ! " l = "A l o n g s t r i n g spanning s e v e r a l l i n e s \ one more l i n e \ yet another " t = " " "A t r i p l e quoted s t r i n g does n o t need t o be escaped a t t h e end and " can have nested quotes " and whatnot . " " "

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Strings
>>> word = " h e l l o " >>> 2 word + " w o r l d " # A r i t h m e t i c on s t r i n g s h e l l o h e l l o world >>> p r i n t word [ 0 ] + word [ 2 ] + word [ 1] hlo >>> # S t r i n g s are " immutable " . . . word [ 0 ] = H Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? TypeError : o b j e c t doesnt s u p p o r t i t e m assignment >>> l e n ( word ) # The l e n g t h o f t h e s t r i n g 5 >>> 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 t h e l e a d i n g r ) . . . raw_s = r A \ LaTeX s t r i n g $ \ alpha \ nu$
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

More on strings
>>> a = h e l l o w o r l d >>> 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 ( ) . l o w e r ( ) h e l l o world >>> a . s p l i t ( ) [ h e l l o , world ] >>> . 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 >>> # c o u l d a l s o 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 ow, 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

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 ow, 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 , 1 2 ] # Replace some i t e m s >>> a [ 1 , 12 , 123 , 1234] >>> a [ 0 : 2 ] = [ ] # Remove some i t e m s >>> a [ 1 2 3 , 1234]

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

List methods
>>> a = [ spam , eggs , 100 , 1234] >>> l e n ( a ) 4 >>> a . r e v e r s e ( ) >>> a [ 1 2 3 4 , 100 , eggs , spam ] >>> a . append ( [ x , 1 ] ) # L i s t s can c o n t a i n l i s t s . >>> a [ 1 2 3 4 , 100 , eggs , spam , [ x , 1 ] ] >>> a . extend ( [ 1 , 2 ] ) # Extend t h e l i s t . >>> a [ 1 2 3 4 , 100 , eggs , spam , [ x , 1 ] , 1 , 2 ]

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Tuples

>>> t = ( 0 , 1 , 2 ) >>> p r i n t t [ 0 ] , t [ 1 ] , t [ 2 ] , t [ 1 ] , t [ 2 ] , t [ 3] 0 1 2 2 1 0 >>> # Tuples are immutable ! . . . t [0] = 1 Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? TypeError : o b j e c t doesn t s u p p o r t i t e m assignment

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 ow, functions Modules, exceptions, classes Miscellaneous

Dictionaries: example
>>> t e l = { j a c k : 4098 , sape : 4139} >>> t e l [ guido ] = 4127 >>> t e l { sape : 4139 , guido : 4127 , j a c k : 4098} >>> t e l [ j a c k ] 4098 >>> del t e l [ sape ] >>> t e l [ i r v ] = 4127 >>> t e l { guido : 4127 , i r v : 4127 , j a c k : 4098} >>> t e l . keys ( ) [ guido , i r v , j a c k ] >>> t e l . has_key ( guido ) True
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Control ow

Control ow 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 nothing needs to be done

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

If example
x = i n t ( r a w _ i n p u t ( " Please e n t e r an i n t e g e r : " ) ) # r a w _ i n p u t asks t h e user f o r i n p u t . # i n t ( ) t y p e c a s t s t h e 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 = 0 p r i n t Negative changed t o zero e l i f x == 0 : p r i n t Zero e l i f x == 1 : print Single else : p r i n t More

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

If example

>>> a = [ c a t , window , d e f e n e s t r a t e ] >>> i f c a t i n a : p r i n t "meaw" ... ... meaw >>> p e t s = { c a t : 1 , dog : 2 , c r o c : 10} >>> i f c r o c i n p e t s : print pets [ croc ] ... ... 10

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

for example
>>> a = [ c a t , window , d e f e n e s t r a t e ] >>> f o r x i n a : ... print x , len ( x ) ... cat 3 window 6 d e f e n e s t r a t e 12 >>> k n i g h t s = { g a l l a h a d : t h e pure , . . . r o b i n : t h e brave } >>> f o r k , v i n k n i g h t s . i t e r i t e m s ( ) : ... print k , v ... g a l l a h a d t h e pure r o b i n t h e brave
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

for and range example


>>> f o r ... ... 0 0 1 1 2 4 3 9 4 16 >>> a = >>> f o r ... ... 0 a 1 b 2 c i i n range ( 5 ) : print i , i i

[ a , b , c ] i , x i n enumerate ( a ) : print i , x

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

while example
>>> ... ... >>> ... ... ... 1 1 2 3 5 8 # Fibonacci series : # t h e sum o f two elements d e f i n e s t h e n e x t a, b = 0, 1 while b < 1 0 : print b a , b = b , a+b

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 denition may be a documentation string (recommended!) Function denition and execution denes a name bound to the function You can assign a variable to a function!

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Functions: examples
>>> ... ... ... ... ... ... >>> ... 1 1 >>> >>> 1 1 def f i b ( n ) : # w r i t e F i b o n a c c i s e r i e s up t o n " " " P r i n t a F i b o n a c c i s e r i e s up t o n . " " " a, b = 0, 1 while b < n : print b , a , b = b , a+b # Now c a l l t h e f u n c t i o n we j u s t d e f i n e d : f i b (2000) 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 t o a f u n c t i o n f (10) 2 3 5 8

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Functions: default arguments

def ask_ok ( prompt , r e t r i e s =4 , c o m p l a i n t = Yes o r no ! ) : while True : ok = r a w _ i n p u t ( prompt ) i f ok i n ( y , ye , yes ) : r e t u r n True i f ok i n ( n , no , nop , nope ) : r e t u r n False retries = retries 1 i f r e t r i e s < 0: r a i s e I O E r r o r , bad user print complaint

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Functions: keyword arguments

def p a r r o t ( v o l t a g e , s t a t e = a s t i f f , a c t i o n = voom , t y p e = Norwegian Blue ) : p r i n t " T h i s p a r r o t wouldn t " , a c t i o n , p r i n t " i f you p u t " , v o l t a g e , " V o l t s t h r o u g h i t . " p r i n t " L o v e l y plumage , t h e " , t y p e p r i n t " I t s " , s t a t e , " ! " p a r r o t (1000) p a r r o t ( a c t i o n = VOOOOOM , v o l t a g e = 1000000) p a r r o t ( a thousand , s t a t e = pushing up t h e d a i s i e s ) 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

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Modules
Dene variables, functions and classes in a le with a .py extension This le becomes a module! Modules are searched in the following:
Current directory Standard: /usr/lib/python2.3/site-packages/ etc. Directories specied in PYTHONPATH sys.path: current path settings (from the sys module)

The import keyword loads a module One can also use:

from module import name1, name2, name2 where name1 etc. are names in the module, module from module import * imports everything from module, use only in interactive mode
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Modules: example
# f o o . py some_var = 1 def f i b ( n ) : # w r i t e F i b o n a c c i s e r i e s up t o n " " " P r i n t a F i b o n a c c i s e r i e s up t o n . " " " a, b = 0, 1 while b < n : print b , a , b = b , a+b # EOF >>> >>> 1 1 >>> 1 import f o o foo . f i b (10) 2 3 5 8 f o o . some_var
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Namespaces

A mapping from names to objects Modules introduce a namespace So do classes The running scripts namespace is __main__ A modules namespace is identied by its name The standard functions (like len) are in the __builtin__ namespace Namespaces help organize different names and their bindings to different objects

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Exceptions

Pythons 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

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Exception: examples
>>> 10 ( 1 / 0 ) Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? Z e r o D i v i s i o n E r r o r : i n t e g e r d i v i s i o n or modulo by zero >>> 4 + spam 3 Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? NameError : name spam i s not d e f i n e d >>> 2 + 2 Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? TypeError : cannot concatenate s t r and i n t o b j e c t s

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Exception: examples
>>> while True : ... try : ... x = i n t ( r a w _ i n p u t ( " E n t e r a number : " ) ) ... break ... except V a l u e E r r o r : ... p r i n t " I n v a l i d number , t r y again . . . " ... >>> # To r a i s e e x c e p t i o n s . . . r a i s e V a l u e E r r o r , " your e r r o r message " Traceback ( most r e c e n t c a l l l a s t ) : F i l e "<stdin >" , l i n e 2 , in ? V a l u e E r r o r : your e r r o r message

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 dene 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 ow, functions Modules, exceptions, classes Miscellaneous

Classes: whats the big deal?

Lets you create objects that mimic a real problem being simulated Makes problem solving more natural and elegant Easier to create code Allows for code-reuse Polymorphism

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Class denition and instantiation

Class denitions when executed create class objects Instantiating the class object creates an instance of the class
class Foo ( o b j e c t ) : pass # class object created . # Create an i n s t a n c e o f Foo . f = Foo ( ) # Can a s s i g n an a t t r i b u t e t o t h e i n s t a n c e f . a = 100 print f . a 100

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Classes . . .
All attributes are accessed via the object.attribute syntax Both class and instance attributes are supported Methods represent the behavior of an object: crudely think of them as functions belonging to the object All methods in Python are virtual Inheritance through subclassing Multiple inheritance is supported No special public and private attributes: only good conventions object.public(): public object._private() & object.__priv(): non-public

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Classes: examples
class MyClass ( o b j e c t ) : " " " Example c l a s s ( t h i s i s t h e c l a s s d o c s t r i n g ) . " " " i = 12345 # A c l a s s a t t r i b u t e def f ( s e l f ) : " " " T h i s i s t h e method d o c s t r i n g " " " return h e l l o world >>> a = MyClass ( ) # c r e a t e s an i n s t a n c e >>> a . f ( ) h e l l o world >>> # a . f ( ) i s e q u i v a l e n t t o MyClass . f ( a ) . . . # T h i s a l s o e x p l a i n s why f has a s e l f argument . . . . MyClass . f ( a ) h e l l o world
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Classes (continued)
self is conventionally the rst 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 rst argument If a method called __init__ exists, it is called when the object is created If a method called __del__ exists, it is called before the object is garbage collected Instance attributes are set by simply setting them in self Other special methods (by convention) like __add__ let you dene numeric types:
http://docs.python.org/ref/specialnames.html http://docs.python.org/ref/numeric-types.html
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Classes: examples
class Bag ( MyClass ) : # Shows how t o d e r i v e c l a s s e s def _ _ i n i t _ _ ( s e l f ) : # c a l l e d on o b j e c t c r e a t i o n . s e l f . data = [ ] # an i n s t a n c e a t t r i b u t e def 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 world >>> 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 ow, functions Modules, exceptions, classes Miscellaneous

Derived classes
Call the parents __init__ if needed If you dont need a new constructor, no need to dene it in subclass 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 p a r e n t s _ _ i n i t _ _ e x p l i c i t l y Bag . _ _ 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

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Classes: polymorphism
class Drawable ( o b j e c 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 ) : f o r o b j i n s e l f . drawables : o b j . draw ( )
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Stand-alone scripts
Consider a le f.py: # ! / u s r / b i n / env python " " " Module l e v e l documentation . " " " # F i r s t l i n e t e l l s t h e s h e l l t h a t i t should use Python # t o i n t e r p r e t t h e code i n t h e f i l e . def f ( ) : print " f " # Check i f we are r u n n i n g s ta n d al o ne o r as module . # When imported , __name__ w i l l n o t be __main__ i f __name__ == __main__ : # T h i s i s n o t executed when f . py i s i m p o r t e d . f ()

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

More IPython features


Input and output caching: In: a list of all entered input Out: a dict of all output _, __, __ are the last three results as is _N %hist [-n] macro shows previous history, -n suppresses
line 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 line
number to break at (defaults to 1) %run -t: time the script %run -p: Prole the script

%prun runs a statement/expression under the proler %macro [options] macro_name n1-n2 n3-n4 n6 save specied lines to a macro with name macro_name
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

More IPython features . . .


%edit [options] [args]: edit lines of code or le specied in editor (congure editor via $EDITOR) %cd changes directory, see also %pushd, %popd, %dhist Shell access
!command runs a shell command and returns its output files = %sx ls or files = !ls sets files to all result of the ls command %sx is quiet !ls $files passes the files variable to the shell
command

%alias alias_name cmd creates an alias for a system


command

%colors lets you change the color scheme to NoColor, Linux, LightBG
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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: save lines to a le %time statement: Time execution of a Python statement or expression %timeit [-n<N> -r<R> [-t|-c]] statement: time execution using Pythons timeit module
Can dene and use proles 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 ow, functions Modules, exceptions, classes Miscellaneous

File handling
>>> ... >>> >>> >>> ... >>> >>> ... >>> # Reading f i l e s : f = open ( / path / t o / f i l e _ n a m e ) data = f . read ( ) # Read e n t i r e f i l e . l i n e = f . r e a d l i n e ( ) # 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 lines = f . readlines ( ) f . close ( ) # close the f i l e . # Writing f i l e s : f = open ( / path / t o / f i l e _ n a m e , w ) f . w r i t e ( h e l l o world \ n )

tell(): returns int of current position seek(pos): moves current position to specied byte
Call close() when done using a le
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, functions Modules, exceptions, classes Miscellaneous

Math

math module provides basic math routines for oats cmath module provides math routies for complex numbers random: provides pseudo-random number generators for various 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 ow, functions Modules, exceptions, classes Miscellaneous

Timing and proling

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 (type timeit? for help) IPython lets you debug and prole code via the run macro (type run? on the prompt to learn more)

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control ow, 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 les 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 scientic computing is slow Most complex computations can be reduced to a few standard operations The numpy module provides:
An efcient and powerful array type for various common data types Abstracts out the most commonly used standard operations on arrays

Numeric was the rst, then came numarray. numpy is the latest and is the future This course uses numpy and only covers the absolute basics

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Basic concepts
numpy arrays are of a xed size (arr.size) and have the same type (arr.dtype) numpy arrays may have arbitrary dimensionality The shape of an array is the extent (length) of the array along each dimension The rank(arr) of an array is the dimensionality of the array The arr.itemsize is the number of bytes (8-bits) used for each element of the array Note: The shape and rank may change as long as the size of the array is xed Note: len(arr) != arr.size in general Note: By default array operations are performed elementwise Indices start from 0
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Examples of numpy
# Simple a r r a y math example >>> from numpy import >>> a = a r r a y ( [ 1 , 2 , 3 , 4 ] ) >>> b = a r r a y ( [ 2 , 3 , 4 , 5 ] ) >>> a + b # Element wise a d d i t i o n ! array ( [ 3 , 5 , 7 , 9 ] ) >>> p r i n t p i , e # P i and e are d e f i n e d . 3.14159265359 2.71828182846 # Create a r r a y from 0 t o 10 >>> x = arange ( 0 . 0 , 1 0 . 0 , 0 . 0 5 ) >>> x = 2 p i / 1 0 # m u l t i p l y a r r a y by s c a l a r v a l u e array ( [ 0 . , 0 . 0 3 1 4 , . . . , 6 . 2 5 2 ] ) # apply f u n c t i o n s to array . >>> y = s i n ( x )
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

More examples of numpy


# Size , shape , rank , t y p e e t c . >>> x = a r r a y ( [ 1 . , 2 , 3 , 4 ] ) >>> s i z e ( x ) 4 >>> x . dtype # o r x . dtype . char d >>> x . shape (4 ,) >>> p r i n t rank ( x ) , x . i t e m s i z e 1 8 >>> x . t o l i s t ( ) [1.0 , 2.0 , 3.0 , 4.0] # Array indexing >>> x [ 0 ] = 10 >>> p r i n 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 = a r r a y ( [ [ 0 , 1 , 2 , 3 ] , ... [10 ,11 ,12 ,13]]) >>> a . shape # ( rows , columns ) (2 , 4) # Accessing and s e t t i n g v a l u e s >>> a [ 1 , 3 ] 13 >>> a [ 1 , 3 ] = 1 >>> a [ 1 ] # The second row array ([10 ,11 ,12 , 1]) # F l a t t e n / r a v e l a r r a y s t o 1D a r r a y s >>> a . f l a t # o r r a v e l ( a ) array ([0 ,1 ,2 ,3 ,10 ,11 ,12 , 1]) # Note : f l a t r e f e r e n c e s o r i g i n a l memory
Prabhu Ramachandran Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Slicing arrays
>>> a = a r r a y ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] ) >>> a [ 0 , 1 : 3 ] array ( [ 2 , 3 ] ) >>> a [ 1 : , 1 : ] array ( [ [ 5 , 6] , [8 , 9 ] ] ) >>> a [ : , 2 ] array ( [ 3 , 6 , 9 ] ) # Striding . . . >>> a [ 0 : : 2 , 0 : : 2 ] array ( [ [ 1 , 3] , [7 , 9 ] ] ) # A l l these s l i c e s are r e f e r e n c e s t o t h e 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

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 and product of array elements

dot(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

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

About matplotlib
Easy to use, scriptable, Matlab-like 2D plotting Publication quality gures 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

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Basic plotting with matplotlib


>>> x = arange ( 0 , 2 p i , 0 . 0 5 ) >>> p l o t ( x , s i n ( x ) ) # Same as p l o t ( x , s i n ( x ) , b ) >>> p l o t ( x , s i n ( x ) , r o ) >>> a x i s ( [ 0 , 2 p i , 1 ,1]) >>> x l a b e l ( r $ \ c h i $ , c o l o r = g ) >>> y l a b e l ( r s i n ( $ \ c h i $ ) , c o l o r = r ) >>> t i t l e ( A s i m p l e f i g u r e , f o n t s i z e =20) >>> s a v e f i g ( / 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 , b l u e 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 o b j e c t s : >>> p l o t ( x , s i n ( x ) , l i n e w i d t h = 2 . 0 , c o l o r = r ) >>> l , = p l o t ( x , s i n ( x ) ) >>> s e t p ( l , l i n e w i d t h = 2 . 0 , c o l o r = r ) >>> l . s e t _ l i n e w i d t h ( 2 . 0 ) ; l . s e t _ c o l o r ( r ) >>> draw ( ) # Redraws c u r r e n t f i g u r e . >>> s e t p ( 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 >>> c l o s e ( ) # Closes t h e f i g u r e . # Multiple figures : >>> f i g u r e ( 1 ) ; p l o t ( x , s i n ( 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

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Basic plotting . . .

>>> >>> >>> >>> >>> >>> >>> >>> >>> >>>

figure (1) s u b p l o t ( 2 1 1 ) # Same as s u b p l o t ( 2 , 1 , 1 ) p l o t ( x , cos (5 x ) exp( x ) ) subplot (2 , 1 , 2) p l o t ( x , cos (5 x ) , r , l a b e l = c o s i n e ) p l o t ( x , s i n (5 x ) , g , l a b e l = s i n e ) legend ( ) # Or legend ( [ c o s i n e , s i n e ] ) text (1 ,0 , (1 ,0) ) axes = gca ( ) # C u r r e n t a x i s 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
t 1 = arange ( 0 . 0 , 5 . 0 , 0 . 1 ) t 2 = arange ( 0 . 0 , 5 . 0 , 0 . 0 2 ) t 3 = arange ( 0 . 0 , 2 . 0 , 0 . 0 1 ) subplot (211) p l o t ( t1 , cos (2 p i t 1 ) exp( t 1 ) , bo , t2 , cos (2 p i t 2 ) exp( t 2 ) , k ) g r i d ( True ) t i t l e ( A t a l e o f 2 s u b p l o t s ) y l a b e l ( Damped ) subplot (212) p l o t ( t3 , cos (2 p i t 3 ) , r ) g r i d ( True ) x l a b e l ( time ( s ) ) y l a b e l ( Undamped )

Prabhu Ramachandran

Introduction to Python

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 ( l e n ( s ) ) ) f = 0.1 abs ( randn ( l e n ( s ) ) ) g = 2e h = 2 f e r r o r b a r ( t , s , [ e , g ] , f , fmt= o ) x l a b e l ( D i s t a n c e (m) ) y l a b e l ( H e i g h t (m) ) t i t l e ( Mean and s t a n d a r d e r r o r \ as a f u n c t i o n o f d i s t a n c e )

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
d t = 0.01 t = arange ( dt , 2 0 . 0 , d t ) subplot (311) semilogy ( t , exp( t / 5 . 0 ) ) y l a b e l ( semilogy ) g r i d ( True ) subplot (312) semilogx ( t , s i n (2 p i t ) ) y l a b e l ( semilogx ) g r i d ( True ) # minor g r i d on t o o gca ( ) . x a x i s . g r i d ( True , which= minor ) subplot (313) l o g l o g ( t , 20 exp( t / 1 0 . 0 ) , basex =4) g r i d ( True ) y l a b e l ( l o g l o g base 4 on x )

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Histogram

Example code
mu, sigma = 100 , 15 x = mu + sigma randn (10000) # t h e h i s t o g r a m o f t h e data n , bins , patches = h i s t ( x , 100 , normed =1) # add a b e s t f i t l i n e y = normpdf ( bins , mu, sigma ) l = p l o t ( bins , y , r , l i n e w i d t h =2) x l i m ( 4 0 , 160) x l a b e l ( Smarts ) y l a b e l ( P ) t i t l e ( r $ \ rm { IQ : } \ / \mu= 1 0 0 , \ / \ sigma=15$ )

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Bar charts
Example code
N = 5 menMeans = ( 2 0 , 35 , 30 , 35 , 27) menStd = ( 2 , 3 , 4 , 1 , 2) # t h e x l o c a t i o n s f o r t h e groups i n d = arange (N) # t h e w i d t h o f t h e bars w i d t h = 0.35 p1 = bar ( ind , menMeans , width , c o l o r = r , y e r r =menStd ) womenMeans = ( 2 5 , 32 , 34 , 20 , 25) womenStd = ( 3 , 5 , 2 , 3 , 3) p2 = bar ( i n d + width , womenMeans , width , c o l o r = y , y e 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 ( i n d + width , ( G1 , G2 , G3 , G4 , G5 ) ) x l i m ( width , l e n ( i n d ) ) y t i c k s ( arange ( 0 , 4 1 , 1 0 ) ) legend ( ( p1 [ 0 ] , p2 [ 0 ] ) , ( Men , Women ) , shadow=True )

Prabhu Ramachandran

Introduction to Python

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 axes figure (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 a c s = [15 ,30 ,45 , 10] explode = ( 0 , 0 . 0 5 , 0 , 0 ) p i e ( f r a c s , explode=explode , l a b e l s = l a b e l s , a u t o p c t = %1.1 f%% , shadow=True ) t i t l e ( R a i n i n g Hogs and Dogs , bbox ={ f a c e c o l o 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 = 30 x = 0.9 rand (N) y = 0.9 rand (N) # 0 t o 10 p o i n t r a d i u s e s area = p i (10 rand (N)) 2 volume = 400 + rand (N) 450 s c a t t e r ( x , y , s=area , marker= o , c=volume , alpha = 0 . 7 5 ) x l a b e l ( r $ \ D e l t a _ i $ , s i z e = xl a r g e ) y l a b e l ( r $ \ D e l t a _ { i +1} $ , s i z e = xl a r g e ) t i t l e ( r Volume and p e r c e n t change ) g r i d ( True ) colorbar ( ) savefig ( scatter )

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Polar

Example code
figure ( figsize =(8 ,8)) ax = axes ( [ 0 . 1 , 0 . 1 , 0 . 8 , 0 . 8 ] , p o l a r =True , a x i s b g = #d5de9c ) r = arange ( 0 , 1 , 0 . 0 0 1 ) t h e t a = 22 p i r p o l a r ( t h e t a , r , c o l o r = #ee8d18 , lw =3) # the radius of the g r i d l a b e l s s e t p ( 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 " $ \ t h e t a =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 . 0 2 5 ) y = arange ( 2.0 , 2 . 0 , 0 . 0 2 5 ) X , Y = meshgrid ( x , y ) Z1 = b i v a r i a t e _ n o r m a l ( X , Y , 1 . 0 , 1 . 0 , 0 . 0 , 0 . 0 ) Z2 = b i v a r i a t e _ n o r m a l ( X , Y , 1 . 5 , 0 . 5 , 1 , 1 ) # d i f f e r e n c e o f Gaussians Z = 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 , e x t e n 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 l c l a b e l (CS, l e v e l s [ 1 : : 2 ] , i n l i n e =1 , f m t = %1.1 f , f o n t s i z e =14) CS = c o n t o u r ( Z , l e v e l s , o r i g i n = lower , l i n e w i d t h s =2 , e x t e n t =( 3 ,3 , 2 ,2)) # make a c o l o r b a r f o r t h e c o n t o u r l i n e s CB = c o l o r b a r (CS, s h r i n k = 0 . 8 , extend= both ) t i t l e ( Lines with c o l o r b a r ) hot ( ) ; f l a g ( )

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Velocity vectors

Example code
X , Y = meshgrid ( arange (0 ,2 p i , . 2 ) , arange (0 ,2 p i , . 2 ) ) U = cos ( X) V = s i n ( Y) Q = quiver (X [ : : 3 , : : 3 ] , Y [ : : 3 , : : 3 ] , U[ : : 3 , : : 3 ] , V[ : : 3 , : : 3 ] , color= r , units= x , linewidths =(2 ,) , e d g e c o lo r s =( k ) , h e a d a x i s l e n g t h =5 ) qk = q u i v e r k e y (Q, 0 . 5 , 0 . 0 3 , 1 , 1 m/ s , fontproperties= { weight : bold } ) a x i s ([ 1 , 7 , 1, 7 ] ) t i t l e ( t r i a n g u l a r head ; s c a l e \ w i t h x view ; b l a c k 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

Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy

Using SciPy

SciPy is Open Source software for mathematics, science, and engineering

import scipy
Built on NumPy Provides modules for statistics, optimization, integration, linear algebra, 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: os System, Command line arguments: sys Regular expressions: re Math: math, random Internet access: urllib2, smtplib Data compression: zlib, gzip, bz2, zipfile, and tarfile Unit testing: doctest and unittest
And a whole lot more!

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 Quick Tour

Stdlib: examples
>>> import os >>> os . system ( date ) F r i Jun 10 2 2 : 1 3 :0 9 IST 2005 0 >>> os . getcwd ( ) / home / prabhu >>> os . c h d i r ( / tmp ) >>> import os >>> d i r ( os ) < r e t u r n s a l i s t o f a l l module f u n c t i o n s > >>> h e l p ( os ) < e x t e n s i v e manual page from module s d o c s t r i n g s >

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Quick Tour

Stdlib: examples

>>> import sys >>> # P r i n t t h e l i s t o f command l i n e args t o Python . . . p r i n t sys . argv [ ] >>> import r e # Regular e x p r e s s i o n s >>> r e . f i n d a l l ( r \ b f [ az ] , . . . which f o o t o r hand f e l l f a s t e s t ) [ foot , f e l l , fastest ] >>> r e . sub ( r ( \ b [ az ] + ) \ 1 , r \ 1 , . . . cat i n the the hat ) cat i n the hat

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Quick Tour

Stdlib: examples

>>> import math >>> math . cos ( math . p i / 4 . 0 ) 0.70710678118654757 >>> math . l o g (1024 , 2 ) 10.0 >>> import random >>> random . c h o i c e ( [ 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 . u r l o p e n ( h t t p : / / www. python . org / ) >>> p r i n t f . read ( 1 0 0 ) <!DOCTYPE h t m l PUBLIC " //W3C / / DTD HTML 4.01 T r a n s i t i o n a l / <?xml s t y l e s h e e t h r e f = " . / css / h t 2 h t m l

Prabhu Ramachandran

Introduction to Python

Introduction Python Tutorial Numerics & Plotting Standard library Quick Tour

Stdlib: examples

>>> import z l i b >>> s = w i t c h which has which w i t c h e s w r i s t watch >>> l e n ( s ) 41 >>> t = z l i b . compress ( s ) >>> l e n ( t ) 37 >>> z l i b . decompress ( t ) w i t c h which has which w i t c h e s 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 ow Functions Modules Exceptions Classes Standard library

Prabhu Ramachandran

Introduction to Python

You might also like