SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
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
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/doc
Free Tutorials:
Official 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 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 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-fledged 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 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 paradigm
down 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
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 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 flexible framework for your own custom interpreter
Other miscellaneous conveniences
We’ll get back to this later
Prabhu Ramachandran Introduction to Python
Introduction Python Tutorial Numerics & Plotting Standard library
Preliminaries Data types Control flow, 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 file 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 flow, functions Modules, exceptions, classes Miscellaneous
Basic concepts
Dynamically typed
Assignments need not specify a type
a = 1
a = 1.1
a = " foo "
a = SomeClass ( )
Comments:
a = 1 # In−l i n e comments
# Comment in a l i n e to i t s e l f .
a = "# This i s not a comment ! "
Prabhu Ramachandran Introduction to Python
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 ) :
print " inside loop : " ,
# Do something in the loop .
print i , i ∗ i
print " loop i s done ! " # This i s outside 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
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 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 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 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 don’t have
to worry about it
Prabhu Ramachandran Introduction to Python
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 !
>>> print f ∗c / a
(3.14159+3.14159 j )
>>> print c . real , 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 flow, functions Modules, exceptions, classes Miscellaneous
Boolean
>>> t = True
>>> f = not t
False
>>> f or t
True
>>> f and t
False
Prabhu Ramachandran Introduction to Python
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 " inside ! ’
s = "The reverse with ’ single−quotes ’ inside ! "
l = "A long s t r i n g spanning several 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 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 = " hello "
>>> 2∗word + " world " # Arithmetic on s t r i n g s
h e l l o h e l l o world
>>> print word [ 0 ] + word [ 2 ] + word[ −1]
hlo
>>> # Strings are " immutable "
. . . word [ 0 ] = ’H ’
Traceback ( most recent c a l l l a s t ) :
F i l e "<stdin >" , l i n e 1 , in ?
TypeError : object doesnt support item assignment
>>> len ( word ) # The length of the 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 the leading ’ 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 flow, functions Modules, exceptions, classes Miscellaneous
More on strings
>>> a = ’ hello world ’
>>> a . s t a r t s w i t h ( ’ h e l l ’ )
True
>>> a . endswith ( ’ ld ’ )
True
>>> a . upper ( )
’HELLO WORLD’
>>> a . upper ( ) . lower ( )
’ hello world ’
>>> a . s p l i t ( )
[ ’ hello ’ , ’ 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 ’
>>> # could also 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
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
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 contain 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)
>>> print 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 recent c a l l l a s t ) :
F i l e "<stdin >" , l i n e 1 , in ?
TypeError : object doesn ’ t support item assignment
Prabhu Ramachandran Introduction to Python
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 = { ’ jack ’ : 4098, ’ sape ’ : 4139}
>>> t e l [ ’ guido ’ ] = 4127
>>> t e l
{ ’ sape ’ : 4139, ’ guido ’ : 4127, ’ jack ’ : 4098}
>>> t e l [ ’ jack ’ ]
4098
>>> del t e l [ ’ sape ’ ]
>>> t e l [ ’ i r v ’ ] = 4127
>>> t e l
{ ’ guido ’ : 4127, ’ i r v ’ : 4127, ’ jack ’ : 4098}
>>> t e l . keys ( )
[ ’ guido ’ , ’ i r v ’ , ’ jack ’ ]
>>> t e l . has_key ( ’ guido ’ )
True
Prabhu Ramachandran Introduction to Python
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 nothing
needs 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 integer : " ) )
# raw_input asks the user f o r input .
# 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 = 0
print ’ Negative changed to zero ’
e l i f x == 0:
print ’ Zero ’
e l i f x == 1:
print ’ Single ’
else :
print ’ More ’
Prabhu Ramachandran Introduction to Python
Introduction Python Tutorial Numerics & Plotting Standard library
Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous
If example
>>> a = [ ’ cat ’ , ’ window ’ , ’ defenestrate ’ ]
>>> i f ’ cat ’ in a :
. . . print "meaw"
. . .
meaw
>>> pets = { ’ cat ’ : 1 , ’ dog ’ :2 , ’ croc ’ : 10}
>>> i f ’ croc ’ in pets :
. . . print 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 = [ ’ cat ’ , ’ window ’ , ’ defenestrate ’ ]
>>> for x in a :
. . . print x , len ( x )
. . .
cat 3
window 6
defenestrate 12
>>> knights = { ’ gallahad ’ : ’ the pure ’ ,
. . . ’ robin ’ : ’ the brave ’ }
>>> for k , v in knights . i t e r i t e m s ( ) :
. . . print k , v
. . .
gallahad the pure
robin the brave
Prabhu Ramachandran Introduction to Python
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 ) :
. . . print i , i ∗ i
. . .
0 0
1 1
2 4
3 9
4 16
>>> a = [ ’a ’ , ’b ’ , ’ c ’ ]
>>> for i , x in enumerate ( a ) :
. . . print 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
>>> # Fibonacci series :
. . . # the sum of two elements defines the next
. . . a , b = 0 , 1
>>> while b < 10:
. . . print b
. . . a , b = b , a+b
. . .
1
1
2
3
5
8
Prabhu Ramachandran Introduction to Python
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 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 flow, functions Modules, exceptions, classes Miscellaneous
Functions: examples
>>> def f i b ( n ) : # write Fibonacci series up to n
. . . " " " P r i n t a Fibonacci series up to n . " " "
. . . a , b = 0 , 1
. . . while b < n :
. . . print b ,
. . . a , b = b , a+b
. . .
>>> # Now c a l l the function we j u s t defined :
. . . 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 variable to a function
>>> f (10)
1 1 2 3 5 8
Prabhu Ramachandran Introduction to Python
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 , complaint= ’Yes or no ! ’ ) :
while True :
ok = raw_input ( prompt )
i f ok in ( ’ y ’ , ’ ye ’ , ’ yes ’ ) :
return True
i f ok in ( ’n ’ , ’ no ’ , ’ nop ’ , ’ nope ’ ) :
return False
r e t r i e s = r e t r i e s − 1
i f r e t r i e s < 0:
raise IOError , ’ bad user ’
print complaint
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 parrot ( voltage , state= ’a s t i f f ’ ,
action= ’voom ’ , type= ’ Norwegian Blue ’ ) :
print "−− This parrot wouldn ’ t " , action ,
print " i f you put " , voltage , " Volts through i t . "
print "−− Lovely plumage , the " , type
print "−− I t ’ s " , state , " ! "
parrot (1000)
parrot ( action = ’VOOOOOM’ , voltage = 1000000)
parrot ( ’a thousand ’ , state = ’ pushing up the daisies ’ )
parrot ( ’a m i l l i o n ’ , ’ bereft of l i f e ’ , ’ jump ’ )
Prabhu Ramachandran Introduction to Python
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 .py
extension
This file becomes a module!
Modules are searched in the following:
Current directory
Standard: /usr/lib/python2.3/site-packages/ etc.
Directories specified 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 flow, functions Modules, exceptions, classes Miscellaneous
Modules: example
# −−− foo . py −−−
some_var = 1
def f i b ( n ) : # write Fibonacci series up to n
" " " P r i n t a Fibonacci series up to n . " " "
a , b = 0 , 1
while b < n :
print b ,
a , b = b , a+b
# EOF
>>> import foo
>>> foo . f i b (10)
1 1 2 3 5 8
>>> foo . some_var
1
Prabhu Ramachandran Introduction to Python
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 bindings
to 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
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 "<stdin >" , l i n e 1 , in ?
ZeroDivisionError : integer d i v i s i o n or modulo by zero
>>> 4 + spam∗3
Traceback ( most recent c a l l l a s t ) :
F i l e "<stdin >" , l i n e 1 , in ?
NameError : name ’spam ’ is not defined
>>> ’2 ’ + 2
Traceback ( most recent 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 ’ objects
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 :
. . . try :
. . . x = i n t ( raw_input ( " Enter a number : " ) )
. . . break
. . . except ValueError :
. . . print " I n v a l i d number , t r y again . . . "
. . .
>>> # To raise exceptions
. . . raise ValueError , " your error message"
Traceback ( most recent c a l l l a s t ) :
F i l e "<stdin >" , l i n e 2 , in ?
ValueError : your error message
Prabhu Ramachandran Introduction to Python
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 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 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 ( object ) :
pass
# class object created .
# Create an instance of Foo .
f = Foo ( )
# Can assign an a t t r i b u t e to the instance
f . a = 100
print f . a
100
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.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 flow, functions Modules, exceptions, classes Miscellaneous
Classes: examples
class MyClass ( object ) :
" " " Example class ( t h i s i s the class docstring ) . " " "
i = 12345 # A class a t t r i b u t e
def f ( s e l f ) :
" " " This i s the method docstring " " "
return ’ hello world ’
>>> a = MyClass ( ) # creates an instance
>>> a . f ( )
’ hello world ’
>>> # a . f ( ) i s equivalent to MyClass . f ( a )
. . . # This also explains why f has a ’ s e l f ’ argument .
. . . MyClass . f ( a )
’ hello world ’
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 first
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
define 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 flow, functions Modules, exceptions, classes Miscellaneous
Classes: examples
class Bag( MyClass ) : # Shows how to derive classes
def __init__ ( s e l f ) : # called on object creation .
s e l f . data = [ ] # an instance a t t r i b u t e
def add ( self , x ) :
s e l f . data . append ( x )
def addtwice ( self , x ) :
s e l f . add ( x )
s e l f . add ( x )
>>> a = Bag ( )
>>> a . f ( ) # I n h e ri t e d method
’ hello 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 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 in
subclass
Can also use the super built-in function
class AnotherBag (Bag ) :
def __init__ ( s e l f ) :
# Must c a l l parent ’ s __init__ e x p l i c i t l y
Bag . __init__ ( 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 ) . __init__ ( )
# 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 flow, functions Modules, exceptions, classes Miscellaneous
Classes: polymorphism
class Drawable ( object ) :
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 Circle ( 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 :
obj . 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 / bin / 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 that i t should use Python
# to i n t e r p r e t the code in the f i l e .
def f ( ) :
print " 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
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 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: Profile the script
%prun runs a statement/expression under the profiler
%macro [options] macro_name n1-n2 n3-n4 n6
save 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 file
specified in editor (configure 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 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: save
lines to a file
%time statement: Time execution of a Python statement
or expression
%timeit [-n<N> -r<R> [-t|-c]] statement: time
execution 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 / file_name ’ )
>>> data = f . read ( ) # Read e n t i r e f i l e .
>>> l i n e = f . readline ( ) # 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 . readlines ( )
>>> f . close ( ) # close the f i l e .
>>> # Writing f i l e s :
. . . f = open ( ’ / path / to / file_name ’ , ’w ’ )
>>> f . write ( ’ hello world  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
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 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 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 (type
timeit? 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
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 standard
operations
The numpy module provides:
An efficient and powerful array type for various common data
types
Abstracts out the most commonly used standard operations on
arrays
Numeric was the first, 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 fixed 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 fixed
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 array math example
>>> from numpy import ∗
>>> a = array ( [ 1 , 2 , 3 , 4 ] )
>>> b = array ( [ 2 , 3 , 4 , 5 ] )
>>> a + b # Element wise addition !
array ( [ 3 , 5 , 7 , 9 ] )
>>> print pi , e # Pi and e are defined .
3.14159265359 2.71828182846
# Create array from 0 to 10
>>> x = arange (0.0 , 10.0 , 0.05)
>>> x ∗= 2∗ pi /10 # m u l t i p l y array by scalar value
array ( [ 0 . , 0 . 0 3 1 4 , . . . , 6 . 2 5 2 ] )
# apply functions to array .
>>> y = sin ( 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 , type etc .
>>> x = array ( [ 1 . , 2 , 3 , 4 ] )
>>> size ( x )
4
>>> x . dtype # or x . dtype . char
’d ’
>>> x . shape
(4 ,)
>>> print rank ( x ) , x . itemsize
1 8
>>> x . t o l i s t ( )
[ 1. 0 , 2.0 , 3.0 , 4.0]
# Array indexing
>>> x [ 0 ] = 10
>>> print 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 = array ( [ [ 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 row
array ([10 ,11 ,12 , −1])
# Flatten / ravel arrays to 1D arrays
>>> a . f l a t # or ravel ( a )
array ([0 ,1 ,2 ,3 ,10 ,11 ,12 , −1])
# Note : f l a t references 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 = array ( [ [ 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 ] )
# S t r i d i n g . . .
>>> a [ 0 : : 2 , 0 : : 2 ]
array ( [ [ 1 , 3] ,
[7 , 9 ] ] )
# A l l these s l i c e s are references 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
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 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
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 , sin ( x ) ) # Same as p l o t ( x , sin ( x ) , ’b− ’)
>>> p l o t ( x , sin ( x ) , ’ ro ’ )
>>> axis ([0 ,2∗ pi , −1 ,1])
>>> xlabel ( r ’$  chi$ ’ , color= ’g ’ )
>>> ylabel ( r ’ sin ( $  chi$ ) ’ , color= ’ r ’ )
>>> t i t l e ( ’A simple f i g u r e ’ , fo nts iz e =20)
>>> savefig ( ’ / tmp / t e s t . eps ’ )
# M ul ti pl e plots in 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 properties of objects :
>>> p l o t ( x , sin ( x ) , l i n e w i d t h =2.0 , color= ’ r ’ )
>>> l , = p l o t ( x , sin ( x ) )
>>> setp ( l , l i n e w i d t h =2.0 , color= ’ r ’ )
>>> l . set_linewidth ( 2 . 0 ) ; l . set_color ( ’ r ’ )
>>> draw ( ) # Redraws current f i g u r e .
>>> setp ( l ) # Prints available properties
>>> close ( ) # Closes the f i g u r e .
# M ul ti pl e figure s :
>>> f i g u r e ( 1 ) ; p l o t ( x , sin ( 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 . . .
>>> f i g u r e (1)
>>> subplot (211) # Same as subplot (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−−’ , label = ’ cosine ’ )
>>> p l o t ( x , sin (5∗x ) , ’g−−’ , label = ’ sine ’ )
>>> legend ( ) # Or legend ( [ ’ cosine ’ , ’ sine ’ ] )
>>> t e x t (1 ,0 , ’ (1 ,0) ’ )
>>> axes = gca ( ) # Current axis
>>> 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)
subplot (211)
p l o t ( t1 , cos(2∗ pi∗t1 )∗exp(−t1 ) , ’ bo ’ ,
t2 , cos(2∗ pi∗t2 )∗exp(−t2 ) , ’ k ’ )
grid ( True )
t i t l e ( ’A t a l e of 2 subplots ’ )
ylabel ( ’Damped ’ )
subplot (212)
p l o t ( t3 , cos(2∗ pi∗t3 ) , ’ r−−’ )
grid ( True )
xlabel ( ’ time ( s ) ’ )
ylabel ( ’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 ( len ( s ) ) )
f = 0.1∗abs ( randn ( len ( s ) ) )
g = 2∗e
h = 2∗f
errorbar ( t , s , [ e , g ] , f , fmt= ’o ’ )
xlabel ( ’ Distance (m) ’ )
ylabel ( ’ Height (m) ’ )
t i t l e ( ’Mean and standard error ’ 
’ as a function of distance ’ )
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.01
t = arange ( dt , 20.0 , dt )
subplot (311)
semilogy ( t , exp(−t / 5 . 0 ) )
ylabel ( ’ semilogy ’ )
grid ( True )
subplot (312)
semilogx ( t , sin (2∗ pi∗t ) )
ylabel ( ’ semilogx ’ )
grid ( True )
# minor grid on too
gca ( ) . xaxis . grid ( True , which= ’ minor ’ )
subplot (313)
loglog ( t , 20∗exp(−t / 1 0 . 0 ) , basex=4)
grid ( True )
ylabel ( ’ loglog 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)
# the histogram of the data
n , bins , patches = h i s t ( x , 100 , normed=1)
# add a ’ best 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)
xlim (40 , 160)
xlabel ( ’ Smarts ’ )
ylabel ( ’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 = 5
menMeans = (20 , 35 , 30 , 35 , 27)
menStd = ( 2 , 3 , 4 , 1 , 2)
# the x locations f o r the groups
ind = arange (N)
# the width of the bars
width = 0.35
p1 = bar ( ind , menMeans, width ,
color= ’ r ’ , yerr=menStd )
womenMeans = (25 , 32 , 34 , 20 , 25)
womenStd = ( 3 , 5 , 2 , 3 , 3)
p2 = bar ( ind+width , womenMeans, width ,
color= ’ y ’ , yerr=womenStd)
ylabel ( ’ Scores ’ )
t i t l e ( ’ Scores by group and gender ’ )
x t i c k s ( ind+width ,
( ’G1 ’ , ’G2 ’ , ’G3 ’ , ’G4 ’ , ’G5 ’ ) )
xlim(−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
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
f 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 ] )
labels = ’ Frogs ’ , ’Hogs ’ , ’Dogs ’ , ’ Logs ’
fracs = [15 ,30 ,45 , 10]
explode =(0 , 0.05 , 0 , 0)
pie ( fracs , explode=explode , labels=labels ,
autopct= ’ %1.1 f%%’ , shadow=True )
t i t l e ( ’ Raining Hogs and Dogs ’ ,
bbox={ ’ facecolor ’ : ’ 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 to 10 point radiuses
area = pi ∗(10 ∗ rand (N))∗∗2
volume = 400 + rand (N)∗450
scat ter ( x , y , s=area , marker= ’o ’ , c=volume ,
alpha =0.75)
xlabel ( r ’$  Delta_i$ ’ , size= ’ x−large ’ )
ylabel ( r ’$  Delta_ { i +1}$ ’ , size= ’ x−large ’ )
t i t l e ( r ’ Volume and percent change ’ )
grid ( True )
colorbar ( )
savefig ( ’ scatt er ’ )
Prabhu Ramachandran Introduction to Python
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 ] , polar=True ,
axisbg= ’#d5de9c ’ )
r = arange (0 ,1 ,0.001)
theta = 2∗2∗pi∗r
polar ( theta , r , color= ’#ee8d18 ’ , lw =3)
# the radius of the grid labels
setp ( ax . thetagridlabels , y=1.075)
t i t l e ( r "$  theta =4 pi r " , fo nts iz 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 = bivariate_normal (X, Y, 1.0 , 1.0 , 0.0 , 0.0)
Z2 = bivariate_normal (X, Y, 1.5 , 0.5 , 1 , 1)
# difference of 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 , extent =(−3,3,−2,2))
leve ls = arange( −1.2 , 1.6 , 0.2)
# label every second l e v e l
clabel (CS, levels [ 1 : : 2 ] , i n l i n e =1 ,
fmt= ’ %1.1 f ’ , f o n ts iz e =14)
CS = contour (Z , levels ,
o r i g i n = ’ lower ’ ,
linewidths =2 ,
extent =(−3,3,−2,2))
# make a colorbar f o r the contour l i n e s
CB = colorbar (CS, shrink =0.8 , extend= ’ both ’ )
t i t l e ( ’ Lines with colorbar ’ )
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∗ pi , . 2 ) ,
arange (0 ,2∗ pi , . 2 ) )
U = cos (X)
V = sin (Y)
Q = quiver (X [ : : 3 , : : 3 ] , Y [ : : 3 , : : 3 ] ,
U[ : : 3 , : : 3 ] , V [ : : 3 , : : 3 ] ,
color= ’ r ’ , units = ’ x ’ ,
linewidths =(2 ,) ,
edgecolors =( ’ k ’ ) ,
headaxislength=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 ’ } )
axis ([ −1 , 7 , −1, 7 ] )
t i t l e ( ’ t r i a n g u l a r head ; scale ’ 
’ with x view ; black 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 22:13:09 IST 2005
0
>>> os . getcwd ( )
’ /home/ prabhu ’
>>> os . chdir ( ’ / tmp ’ )
>>> import os
>>> d i r ( os )
<returns a l i s t of a l l module functions >
>>> help ( os )
<extensive manual page from module ’ s docstrings >
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 of command l i n e args to Python
. . . print sys . argv
[ ’ ’ ]
>>> import re # Regular expressions
>>> re . f i n d a l l ( r ’  bf [ a−z ]∗ ’ ,
. . . ’ which foot or hand f e l l f a s t e s t ’ )
[ ’ foot ’ , ’ f e l l ’ , ’ f a s t e s t ’ ]
>>> re . sub ( r ’ (  b [ a−z ] + ) 1 ’ , r ’ 1 ’ ,
. . . ’ cat in the the hat ’ )
’ cat in the hat ’
Prabhu Ramachandran Introduction to Python
Introduction Python Tutorial Numerics & Plotting Standard library
Quick Tour
Stdlib: examples
>>> import math
>>> math . cos ( math . pi / 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 . urlopen ( ’ http : / /www. python . org / ’ )
>>> print f . read (100)
<!DOCTYPE html PUBLIC " −//W3C/ / DTD HTML 4.01 T r a n s i t i o n a l /
<?xml−stylesheet href=" . / css / ht2html
Prabhu Ramachandran Introduction to Python
Introduction Python Tutorial Numerics & Plotting Standard library
Quick Tour
Stdlib: examples
>>> import z l i b
>>> s = ’ witch which has which witches 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 )
’ witch which has which witches 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

Más contenido relacionado

La actualidad más candente

Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
Laxman Puri
 

La actualidad más candente (20)

Introduction to programming with python
Introduction to programming with pythonIntroduction to programming with python
Introduction to programming with python
 
Python Tutorial Part 2
Python Tutorial Part 2Python Tutorial Part 2
Python Tutorial Part 2
 
Python Programming
Python ProgrammingPython Programming
Python Programming
 
Presentation on python
Presentation on pythonPresentation on python
Presentation on python
 
Introduction to Python Programming
Introduction to Python ProgrammingIntroduction to Python Programming
Introduction to Python Programming
 
Python - the basics
Python - the basicsPython - the basics
Python - the basics
 
Python interview questions and answers
Python interview questions and answersPython interview questions and answers
Python interview questions and answers
 
Beginning Python
Beginning PythonBeginning Python
Beginning Python
 
Python basics
Python basicsPython basics
Python basics
 
Python Tutorial for Beginner
Python Tutorial for BeginnerPython Tutorial for Beginner
Python Tutorial for Beginner
 
Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
 
Python presentation by Monu Sharma
Python presentation by Monu SharmaPython presentation by Monu Sharma
Python presentation by Monu Sharma
 
What is Python? An overview of Python for science.
What is Python? An overview of Python for science.What is Python? An overview of Python for science.
What is Python? An overview of Python for science.
 
Python 3 Programming Language
Python 3 Programming LanguagePython 3 Programming Language
Python 3 Programming Language
 
Python - Introduction
Python - IntroductionPython - Introduction
Python - Introduction
 
Type hints in python & mypy
Type hints in python & mypyType hints in python & mypy
Type hints in python & mypy
 
Python Tutorial Part 1
Python Tutorial Part 1Python Tutorial Part 1
Python Tutorial Part 1
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
 
Introduction to Structure Programming with C++
Introduction to Structure Programming with C++Introduction to Structure Programming with C++
Introduction to Structure Programming with C++
 
Python - An Introduction
Python - An IntroductionPython - An Introduction
Python - An Introduction
 

Destacado

Python bootcamp - C4Dlab, University of Nairobi
Python bootcamp - C4Dlab, University of NairobiPython bootcamp - C4Dlab, University of Nairobi
Python bootcamp - C4Dlab, University of Nairobi
krmboya
 
SunPy: Python for solar physics
SunPy: Python for solar physicsSunPy: Python for solar physics
SunPy: Python for solar physics
segfaulthunter
 

Destacado (6)

Python bootcamp - C4Dlab, University of Nairobi
Python bootcamp - C4Dlab, University of NairobiPython bootcamp - C4Dlab, University of Nairobi
Python bootcamp - C4Dlab, University of Nairobi
 
Lithuanian Ritinis Sport Federation - Edgaras Dirzius
Lithuanian Ritinis Sport Federation - Edgaras DirziusLithuanian Ritinis Sport Federation - Edgaras Dirzius
Lithuanian Ritinis Sport Federation - Edgaras Dirzius
 
Py con 2012 my presentation
Py con 2012 my presentationPy con 2012 my presentation
Py con 2012 my presentation
 
SunPy: Python for solar physics
SunPy: Python for solar physicsSunPy: Python for solar physics
SunPy: Python for solar physics
 
Python For Scientists
Python For ScientistsPython For Scientists
Python For Scientists
 
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
Python for Science and Engineering: a presentation to A*STAR and the Singapor...Python for Science and Engineering: a presentation to A*STAR and the Singapor...
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
 

Similar a Py tut-handout

Similar a Py tut-handout (20)

Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
 
Introduction to Analytics with Azure Notebooks and Python
Introduction to Analytics with Azure Notebooks and PythonIntroduction to Analytics with Azure Notebooks and Python
Introduction to Analytics with Azure Notebooks and Python
 
First Steps in Python Programming
First Steps in Python ProgrammingFirst Steps in Python Programming
First Steps in Python Programming
 
Python Foundation – A programmer's introduction to Python concepts & style
Python Foundation – A programmer's introduction to Python concepts & stylePython Foundation – A programmer's introduction to Python concepts & style
Python Foundation – A programmer's introduction to Python concepts & style
 
Python (3).pdf
Python (3).pdfPython (3).pdf
Python (3).pdf
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Beginning Python Programming
Beginning Python ProgrammingBeginning Python Programming
Beginning Python Programming
 
Python 1&2.pptx
Python 1&2.pptxPython 1&2.pptx
Python 1&2.pptx
 
Python 1&2.pptx
Python 1&2.pptxPython 1&2.pptx
Python 1&2.pptx
 
MODULE 1.pptx
MODULE 1.pptxMODULE 1.pptx
MODULE 1.pptx
 
Introduction to Python Basics Programming
Introduction to Python Basics ProgrammingIntroduction to Python Basics Programming
Introduction to Python Basics Programming
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Python Workshop
Python WorkshopPython Workshop
Python Workshop
 
Python Tutorial for Beginner
Python Tutorial for BeginnerPython Tutorial for Beginner
Python Tutorial for Beginner
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET Developer
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
20120314 changa-python-workshop
20120314 changa-python-workshop20120314 changa-python-workshop
20120314 changa-python-workshop
 
Python Course.docx
Python Course.docxPython Course.docx
Python Course.docx
 
Introduction to python3.pdf
Introduction to python3.pdfIntroduction to python3.pdf
Introduction to python3.pdf
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Py tut-handout

  • 1. 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
  • 2. 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/doc Free Tutorials: Official 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
  • 3. 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 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
  • 4. 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
  • 5. 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
  • 6. 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 paradigm down 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
  • 7. 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 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 flexible framework for your own custom interpreter Other miscellaneous conveniences We’ll get back to this later Prabhu Ramachandran Introduction to Python
  • 8. Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control flow, 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 file 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 flow, functions Modules, exceptions, classes Miscellaneous Basic concepts Dynamically typed Assignments need not specify a type a = 1 a = 1.1 a = " foo " a = SomeClass ( ) Comments: a = 1 # In−l i n e comments # Comment in a l i n e to i t s e l f . a = "# This i s not a comment ! " Prabhu Ramachandran Introduction to Python
  • 9. 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 ) : print " inside loop : " , # Do something in the loop . print i , i ∗ i print " loop i s done ! " # This i s outside 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
  • 10. 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 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 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 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 don’t have to worry about it Prabhu Ramachandran Introduction to Python
  • 11. 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 ! >>> print f ∗c / a (3.14159+3.14159 j ) >>> print c . real , 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 flow, functions Modules, exceptions, classes Miscellaneous Boolean >>> t = True >>> f = not t False >>> f or t True >>> f and t False Prabhu Ramachandran Introduction to Python
  • 12. 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 " inside ! ’ s = "The reverse with ’ single−quotes ’ inside ! " l = "A long s t r i n g spanning several 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 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 = " hello " >>> 2∗word + " world " # Arithmetic on s t r i n g s h e l l o h e l l o world >>> print word [ 0 ] + word [ 2 ] + word[ −1] hlo >>> # Strings are " immutable " . . . word [ 0 ] = ’H ’ Traceback ( most recent c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? TypeError : object doesnt support item assignment >>> len ( word ) # The length of the 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 the leading ’ r ’ ) . . . raw_s = r ’A LaTeX s t r i n g $ alpha nu$ ’ Prabhu Ramachandran Introduction to Python
  • 13. Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous More on strings >>> a = ’ hello world ’ >>> a . s t a r t s w i t h ( ’ h e l l ’ ) True >>> a . endswith ( ’ ld ’ ) True >>> a . upper ( ) ’HELLO WORLD’ >>> a . upper ( ) . lower ( ) ’ hello world ’ >>> a . s p l i t ( ) [ ’ hello ’ , ’ 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 ’ >>> # could also 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
  • 14. 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
  • 15. 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 contain 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) >>> print 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 recent c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? TypeError : object doesn ’ t support item assignment Prabhu Ramachandran Introduction to Python
  • 16. 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 = { ’ jack ’ : 4098, ’ sape ’ : 4139} >>> t e l [ ’ guido ’ ] = 4127 >>> t e l { ’ sape ’ : 4139, ’ guido ’ : 4127, ’ jack ’ : 4098} >>> t e l [ ’ jack ’ ] 4098 >>> del t e l [ ’ sape ’ ] >>> t e l [ ’ i r v ’ ] = 4127 >>> t e l { ’ guido ’ : 4127, ’ i r v ’ : 4127, ’ jack ’ : 4098} >>> t e l . keys ( ) [ ’ guido ’ , ’ i r v ’ , ’ jack ’ ] >>> t e l . has_key ( ’ guido ’ ) True Prabhu Ramachandran Introduction to Python
  • 17. 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 nothing needs 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 integer : " ) ) # raw_input asks the user f o r input . # 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 = 0 print ’ Negative changed to zero ’ e l i f x == 0: print ’ Zero ’ e l i f x == 1: print ’ Single ’ else : print ’ More ’ Prabhu Ramachandran Introduction to Python
  • 18. Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous If example >>> a = [ ’ cat ’ , ’ window ’ , ’ defenestrate ’ ] >>> i f ’ cat ’ in a : . . . print "meaw" . . . meaw >>> pets = { ’ cat ’ : 1 , ’ dog ’ :2 , ’ croc ’ : 10} >>> i f ’ croc ’ in pets : . . . print 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 = [ ’ cat ’ , ’ window ’ , ’ defenestrate ’ ] >>> for x in a : . . . print x , len ( x ) . . . cat 3 window 6 defenestrate 12 >>> knights = { ’ gallahad ’ : ’ the pure ’ , . . . ’ robin ’ : ’ the brave ’ } >>> for k , v in knights . i t e r i t e m s ( ) : . . . print k , v . . . gallahad the pure robin the brave Prabhu Ramachandran Introduction to Python
  • 19. 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 ) : . . . print i , i ∗ i . . . 0 0 1 1 2 4 3 9 4 16 >>> a = [ ’a ’ , ’b ’ , ’ c ’ ] >>> for i , x in enumerate ( a ) : . . . print 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 >>> # Fibonacci series : . . . # the sum of two elements defines the next . . . a , b = 0 , 1 >>> while b < 10: . . . print b . . . a , b = b , a+b . . . 1 1 2 3 5 8 Prabhu Ramachandran Introduction to Python
  • 20. 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 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 flow, functions Modules, exceptions, classes Miscellaneous Functions: examples >>> def f i b ( n ) : # write Fibonacci series up to n . . . " " " P r i n t a Fibonacci series up to n . " " " . . . a , b = 0 , 1 . . . while b < n : . . . print b , . . . a , b = b , a+b . . . >>> # Now c a l l the function we j u s t defined : . . . 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 variable to a function >>> f (10) 1 1 2 3 5 8 Prabhu Ramachandran Introduction to Python
  • 21. 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 , complaint= ’Yes or no ! ’ ) : while True : ok = raw_input ( prompt ) i f ok in ( ’ y ’ , ’ ye ’ , ’ yes ’ ) : return True i f ok in ( ’n ’ , ’ no ’ , ’ nop ’ , ’ nope ’ ) : return False r e t r i e s = r e t r i e s − 1 i f r e t r i e s < 0: raise IOError , ’ bad user ’ print complaint 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 parrot ( voltage , state= ’a s t i f f ’ , action= ’voom ’ , type= ’ Norwegian Blue ’ ) : print "−− This parrot wouldn ’ t " , action , print " i f you put " , voltage , " Volts through i t . " print "−− Lovely plumage , the " , type print "−− I t ’ s " , state , " ! " parrot (1000) parrot ( action = ’VOOOOOM’ , voltage = 1000000) parrot ( ’a thousand ’ , state = ’ pushing up the daisies ’ ) parrot ( ’a m i l l i o n ’ , ’ bereft of l i f e ’ , ’ jump ’ ) Prabhu Ramachandran Introduction to Python
  • 22. 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 .py extension This file becomes a module! Modules are searched in the following: Current directory Standard: /usr/lib/python2.3/site-packages/ etc. Directories specified 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 flow, functions Modules, exceptions, classes Miscellaneous Modules: example # −−− foo . py −−− some_var = 1 def f i b ( n ) : # write Fibonacci series up to n " " " P r i n t a Fibonacci series up to n . " " " a , b = 0 , 1 while b < n : print b , a , b = b , a+b # EOF >>> import foo >>> foo . f i b (10) 1 1 2 3 5 8 >>> foo . some_var 1 Prabhu Ramachandran Introduction to Python
  • 23. 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 bindings to 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
  • 24. 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 "<stdin >" , l i n e 1 , in ? ZeroDivisionError : integer d i v i s i o n or modulo by zero >>> 4 + spam∗3 Traceback ( most recent c a l l l a s t ) : F i l e "<stdin >" , l i n e 1 , in ? NameError : name ’spam ’ is not defined >>> ’2 ’ + 2 Traceback ( most recent 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 ’ objects 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 : . . . try : . . . x = i n t ( raw_input ( " Enter a number : " ) ) . . . break . . . except ValueError : . . . print " I n v a l i d number , t r y again . . . " . . . >>> # To raise exceptions . . . raise ValueError , " your error message" Traceback ( most recent c a l l l a s t ) : F i l e "<stdin >" , l i n e 2 , in ? ValueError : your error message Prabhu Ramachandran Introduction to Python
  • 25. 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 being simulated Makes problem solving more natural and elegant Easier to create code Allows for code-reuse Polymorphism Prabhu Ramachandran Introduction to Python
  • 26. 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 ( object ) : pass # class object created . # Create an instance of Foo . f = Foo ( ) # Can assign an a t t r i b u t e to the instance f . a = 100 print f . a 100 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.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
  • 27. Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous Classes: examples class MyClass ( object ) : " " " Example class ( t h i s i s the class docstring ) . " " " i = 12345 # A class a t t r i b u t e def f ( s e l f ) : " " " This i s the method docstring " " " return ’ hello world ’ >>> a = MyClass ( ) # creates an instance >>> a . f ( ) ’ hello world ’ >>> # a . f ( ) i s equivalent to MyClass . f ( a ) . . . # This also explains why f has a ’ s e l f ’ argument . . . . MyClass . f ( a ) ’ hello world ’ 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 first 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 define numeric types: http://docs.python.org/ref/specialnames.html http://docs.python.org/ref/numeric-types.html Prabhu Ramachandran Introduction to Python
  • 28. 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 derive classes def __init__ ( s e l f ) : # called on object creation . s e l f . data = [ ] # an instance a t t r i b u t e def add ( self , x ) : s e l f . data . append ( x ) def addtwice ( self , x ) : s e l f . add ( x ) s e l f . add ( x ) >>> a = Bag ( ) >>> a . f ( ) # I n h e ri t e d method ’ hello 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 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 in subclass Can also use the super built-in function class AnotherBag (Bag ) : def __init__ ( s e l f ) : # Must c a l l parent ’ s __init__ e x p l i c i t l y Bag . __init__ ( 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 ) . __init__ ( ) # Now setup any more data . s e l f . more_data = [ ] Prabhu Ramachandran Introduction to Python
  • 29. Introduction Python Tutorial Numerics & Plotting Standard library Preliminaries Data types Control flow, functions Modules, exceptions, classes Miscellaneous Classes: polymorphism class Drawable ( object ) : 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 Circle ( 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 : obj . 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 / bin / 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 that i t should use Python # to i n t e r p r e t the code in the f i l e . def f ( ) : print " 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
  • 30. 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 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: Profile the script %prun runs a statement/expression under the profiler %macro [options] macro_name n1-n2 n3-n4 n6 save 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 file specified in editor (configure 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
  • 31. 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: save lines to a file %time statement: Time execution of a Python statement or expression %timeit [-n<N> -r<R> [-t|-c]] statement: time execution 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 / file_name ’ ) >>> data = f . read ( ) # Read e n t i r e f i l e . >>> l i n e = f . readline ( ) # 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 . readlines ( ) >>> f . close ( ) # close the f i l e . >>> # Writing f i l e s : . . . f = open ( ’ / path / to / file_name ’ , ’w ’ ) >>> f . write ( ’ hello world 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
  • 32. 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 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 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 (type timeit? 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
  • 33. 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 standard operations The numpy module provides: An efficient and powerful array type for various common data types Abstracts out the most commonly used standard operations on arrays Numeric was the first, 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
  • 34. 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 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 fixed 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 array math example >>> from numpy import ∗ >>> a = array ( [ 1 , 2 , 3 , 4 ] ) >>> b = array ( [ 2 , 3 , 4 , 5 ] ) >>> a + b # Element wise addition ! array ( [ 3 , 5 , 7 , 9 ] ) >>> print pi , e # Pi and e are defined . 3.14159265359 2.71828182846 # Create array from 0 to 10 >>> x = arange (0.0 , 10.0 , 0.05) >>> x ∗= 2∗ pi /10 # m u l t i p l y array by scalar value array ( [ 0 . , 0 . 0 3 1 4 , . . . , 6 . 2 5 2 ] ) # apply functions to array . >>> y = sin ( x ) Prabhu Ramachandran Introduction to Python
  • 35. Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy More examples of numpy # Size , shape , rank , type etc . >>> x = array ( [ 1 . , 2 , 3 , 4 ] ) >>> size ( x ) 4 >>> x . dtype # or x . dtype . char ’d ’ >>> x . shape (4 ,) >>> print rank ( x ) , x . itemsize 1 8 >>> x . t o l i s t ( ) [ 1. 0 , 2.0 , 3.0 , 4.0] # Array indexing >>> x [ 0 ] = 10 >>> print 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 = array ( [ [ 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 row array ([10 ,11 ,12 , −1]) # Flatten / ravel arrays to 1D arrays >>> a . f l a t # or ravel ( a ) array ([0 ,1 ,2 ,3 ,10 ,11 ,12 , −1]) # Note : f l a t references o r i g i n a l memory Prabhu Ramachandran Introduction to Python
  • 36. Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy Slicing arrays >>> a = array ( [ [ 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 ] ) # S t r i d i n g . . . >>> a [ 0 : : 2 , 0 : : 2 ] array ( [ [ 1 , 3] , [7 , 9 ] ] ) # A l l these s l i c e s are references 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
  • 37. 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
  • 38. 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
  • 39. 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 , sin ( x ) ) # Same as p l o t ( x , sin ( x ) , ’b− ’) >>> p l o t ( x , sin ( x ) , ’ ro ’ ) >>> axis ([0 ,2∗ pi , −1 ,1]) >>> xlabel ( r ’$ chi$ ’ , color= ’g ’ ) >>> ylabel ( r ’ sin ( $ chi$ ) ’ , color= ’ r ’ ) >>> t i t l e ( ’A simple f i g u r e ’ , fo nts iz e =20) >>> savefig ( ’ / tmp / t e s t . eps ’ ) # M ul ti pl e plots in 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 properties of objects : >>> p l o t ( x , sin ( x ) , l i n e w i d t h =2.0 , color= ’ r ’ ) >>> l , = p l o t ( x , sin ( x ) ) >>> setp ( l , l i n e w i d t h =2.0 , color= ’ r ’ ) >>> l . set_linewidth ( 2 . 0 ) ; l . set_color ( ’ r ’ ) >>> draw ( ) # Redraws current f i g u r e . >>> setp ( l ) # Prints available properties >>> close ( ) # Closes the f i g u r e . # M ul ti pl e figure s : >>> f i g u r e ( 1 ) ; p l o t ( x , sin ( 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
  • 40. Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy Basic plotting . . . >>> f i g u r e (1) >>> subplot (211) # Same as subplot (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−−’ , label = ’ cosine ’ ) >>> p l o t ( x , sin (5∗x ) , ’g−−’ , label = ’ sine ’ ) >>> legend ( ) # Or legend ( [ ’ cosine ’ , ’ sine ’ ] ) >>> t e x t (1 ,0 , ’ (1 ,0) ’ ) >>> axes = gca ( ) # Current axis >>> 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) subplot (211) p l o t ( t1 , cos(2∗ pi∗t1 )∗exp(−t1 ) , ’ bo ’ , t2 , cos(2∗ pi∗t2 )∗exp(−t2 ) , ’ k ’ ) grid ( True ) t i t l e ( ’A t a l e of 2 subplots ’ ) ylabel ( ’Damped ’ ) subplot (212) p l o t ( t3 , cos(2∗ pi∗t3 ) , ’ r−−’ ) grid ( True ) xlabel ( ’ time ( s ) ’ ) ylabel ( ’Undamped ’ ) Prabhu Ramachandran Introduction to Python
  • 41. 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∗e h = 2∗f errorbar ( t , s , [ e , g ] , f , fmt= ’o ’ ) xlabel ( ’ Distance (m) ’ ) ylabel ( ’ Height (m) ’ ) t i t l e ( ’Mean and standard error ’ ’ as a function of distance ’ ) 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.01 t = arange ( dt , 20.0 , dt ) subplot (311) semilogy ( t , exp(−t / 5 . 0 ) ) ylabel ( ’ semilogy ’ ) grid ( True ) subplot (312) semilogx ( t , sin (2∗ pi∗t ) ) ylabel ( ’ semilogx ’ ) grid ( True ) # minor grid on too gca ( ) . xaxis . grid ( True , which= ’ minor ’ ) subplot (313) loglog ( t , 20∗exp(−t / 1 0 . 0 ) , basex=4) grid ( True ) ylabel ( ’ loglog base 4 on x ’ ) Prabhu Ramachandran Introduction to Python
  • 42. Introduction Python Tutorial Numerics & Plotting Standard library NumPy Arrays Plotting: Matplotlib SciPy Histogram Example code mu, sigma = 100 , 15 x = mu + sigma∗randn (10000) # the histogram of the data n , bins , patches = h i s t ( x , 100 , normed=1) # add a ’ best 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) xlim (40 , 160) xlabel ( ’ Smarts ’ ) ylabel ( ’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 = 5 menMeans = (20 , 35 , 30 , 35 , 27) menStd = ( 2 , 3 , 4 , 1 , 2) # the x locations f o r the groups ind = arange (N) # the width of the bars width = 0.35 p1 = bar ( ind , menMeans, width , color= ’ r ’ , yerr=menStd ) womenMeans = (25 , 32 , 34 , 20 , 25) womenStd = ( 3 , 5 , 2 , 3 , 3) p2 = bar ( ind+width , womenMeans, width , color= ’ y ’ , yerr=womenStd) ylabel ( ’ Scores ’ ) t i t l e ( ’ Scores by group and gender ’ ) x t i c k s ( ind+width , ( ’G1 ’ , ’G2 ’ , ’G3 ’ , ’G4 ’ , ’G5 ’ ) ) xlim(−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
  • 43. 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 f 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 ] ) labels = ’ Frogs ’ , ’Hogs ’ , ’Dogs ’ , ’ Logs ’ fracs = [15 ,30 ,45 , 10] explode =(0 , 0.05 , 0 , 0) pie ( fracs , explode=explode , labels=labels , autopct= ’ %1.1 f%%’ , shadow=True ) t i t l e ( ’ Raining Hogs and Dogs ’ , bbox={ ’ facecolor ’ : ’ 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 to 10 point radiuses area = pi ∗(10 ∗ rand (N))∗∗2 volume = 400 + rand (N)∗450 scat ter ( x , y , s=area , marker= ’o ’ , c=volume , alpha =0.75) xlabel ( r ’$ Delta_i$ ’ , size= ’ x−large ’ ) ylabel ( r ’$ Delta_ { i +1}$ ’ , size= ’ x−large ’ ) t i t l e ( r ’ Volume and percent change ’ ) grid ( True ) colorbar ( ) savefig ( ’ scatt er ’ ) Prabhu Ramachandran Introduction to Python
  • 44. 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 ] , polar=True , axisbg= ’#d5de9c ’ ) r = arange (0 ,1 ,0.001) theta = 2∗2∗pi∗r polar ( theta , r , color= ’#ee8d18 ’ , lw =3) # the radius of the grid labels setp ( ax . thetagridlabels , y=1.075) t i t l e ( r "$ theta =4 pi r " , fo nts iz 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 = bivariate_normal (X, Y, 1.0 , 1.0 , 0.0 , 0.0) Z2 = bivariate_normal (X, Y, 1.5 , 0.5 , 1 , 1) # difference of 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 , extent =(−3,3,−2,2)) leve ls = arange( −1.2 , 1.6 , 0.2) # label every second l e v e l clabel (CS, levels [ 1 : : 2 ] , i n l i n e =1 , fmt= ’ %1.1 f ’ , f o n ts iz e =14) CS = contour (Z , levels , o r i g i n = ’ lower ’ , linewidths =2 , extent =(−3,3,−2,2)) # make a colorbar f o r the contour l i n e s CB = colorbar (CS, shrink =0.8 , extend= ’ both ’ ) t i t l e ( ’ Lines with colorbar ’ ) hot ( ) ; f l a g ( ) Prabhu Ramachandran Introduction to Python
  • 45. 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 = sin (Y) Q = quiver (X [ : : 3 , : : 3 ] , Y [ : : 3 , : : 3 ] , U[ : : 3 , : : 3 ] , V [ : : 3 , : : 3 ] , color= ’ r ’ , units = ’ x ’ , linewidths =(2 ,) , edgecolors =( ’ k ’ ) , headaxislength=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 ’ } ) axis ([ −1 , 7 , −1, 7 ] ) t i t l e ( ’ t r i a n g u l a r head ; scale ’ ’ with x view ; black 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
  • 46. 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
  • 47. 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 2005 0 >>> os . getcwd ( ) ’ /home/ prabhu ’ >>> os . chdir ( ’ / tmp ’ ) >>> import os >>> d i r ( os ) <returns a l i s t of a l l module functions > >>> help ( os ) <extensive manual page from module ’ s docstrings > 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 of command l i n e args to Python . . . print sys . argv [ ’ ’ ] >>> import re # Regular expressions >>> re . f i n d a l l ( r ’ bf [ a−z ]∗ ’ , . . . ’ which foot or hand f e l l f a s t e s t ’ ) [ ’ foot ’ , ’ f e l l ’ , ’ f a s t e s t ’ ] >>> re . sub ( r ’ ( b [ a−z ] + ) 1 ’ , r ’ 1 ’ , . . . ’ cat in the the hat ’ ) ’ cat in the hat ’ Prabhu Ramachandran Introduction to Python
  • 48. Introduction Python Tutorial Numerics & Plotting Standard library Quick Tour Stdlib: examples >>> import math >>> math . cos ( math . pi / 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 . urlopen ( ’ http : / /www. python . org / ’ ) >>> print f . read (100) <!DOCTYPE html PUBLIC " −//W3C/ / DTD HTML 4.01 T r a n s i t i o n a l / <?xml−stylesheet href=" . / css / ht2html Prabhu Ramachandran Introduction to Python
  • 49. Introduction Python Tutorial Numerics & Plotting Standard library Quick Tour Stdlib: examples >>> import z l i b >>> s = ’ witch which has which witches 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 ) ’ witch which has which witches 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