Class notes
PYTHON NOTES FOR PROGRAMMING
PYTHON CODES AND INSTRUCTIONS FOR LEARNING HOW TO CODE
[Show more]
Preview 4 out of 177 pages
Uploaded on
June 2, 2022
Number of pages
177
Written in
2020/2021
Type
Class notes
Professor(s)
Dr fareo
Contains
All classes
Institution
University of the Witwatersrand (wits)
Course
Computational And Applied Mathematics (APPM)
All documents for this subject (7)
$8.56
Added
Add to cart
Add to wishlist
100% satisfaction guarantee
Immediately available after payment
Both online and in PDF
No strings attached
Introduction to Scientific Computing in Python
Robert Johansson
April 16, 2016
,Contents
1 Introduction to scientific computing with Python 4
1.1 The role of computing in science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Requirements on scientific computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Tools for managing source code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 What is Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 What makes python suitable for scientific computing? . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1 The scientific python software stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Python environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.3 Python interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.4 IPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.5 IPython notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.6 Spyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Versions of Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.1 Conda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.2 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.3 MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.4 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.8 Python and module versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Introduction to Python programming 11
2.1 Python program files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1 Example: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Character encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 IPython notebooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Looking at what a module contains, and its documentation . . . . . . . . . . . . . . . 13
2.4 Variables and types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 Symbol names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.3 Fundamental types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.4 Type utility functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.5 Type casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Operators and comparisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Compound types: Strings, List and dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.2 List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6.3 Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.4 Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1
, 2.7 Control Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7.1 Conditional statements: if, elif, else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.8 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8.1 for loops: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8.2 List comprehensions: Creating lists using for loops: . . . . . . . . . . . . . . . . . . . 27
2.8.3 while loops: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.9 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.9.1 Default argument and keyword arguments . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.9.2 Unnamed functions (lambda function) . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.10 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.11 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.12 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.13 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.14 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 Numpy - multidimensional data arrays 36
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2 Creating numpy arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.1 From lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.2 Using array-generating functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.1 Comma-separated values (CSV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.2 Numpy’s native file format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4 More properties of the numpy arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5 Manipulating arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.1 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.5.2 Index slicing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.5.3 Fancy indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.6 Functions for extracting data from arrays and creating arrays . . . . . . . . . . . . . . . . . . 45
3.6.1 where . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.6.2 diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.6.3 take . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.6.4 choose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.7 Linear algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.7.1 Scalar-array operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7.2 Element-wise array-array operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7.3 Matrix algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7.4 Array/Matrix transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.7.5 Matrix computations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.7.6 Data processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.7.7 Computations on subsets of arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.7.8 Calculations with higher-dimensional data . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.8 Reshaping, resizing and stacking arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.9 Adding a new dimension: newaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10 Stacking and repeating arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10.1 tile and repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10.2 concatenate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.10.3 hstack and vstack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.11 Copy and “deep copy” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.12 Iterating over array elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.13 Vectorizing functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.14 Using arrays in conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.15 Type casting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.16 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2
, 3.17 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4 SciPy - Library of scientific algorithms for Python 61
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2 Special functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.3.1 Numerical integration: quadrature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.4 Ordinary differential equations (ODEs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.5 Fourier transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.6 Linear algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.6.1 Linear equation systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.6.2 Eigenvalues and eigenvectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.6.3 Matrix operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.6.4 Sparse matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.7 Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.7.1 Finding a minima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.7.2 Finding a solution to a function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.8 Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.9 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.9.1 Statistical tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.10 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.11 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5 matplotlib - 2D and 3D plotting in Python 82
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.2 MATLAB-like API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.3 The matplotlib object-oriented API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.3.1 Figure size, aspect ratio and DPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.3.2 Saving figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.3 Legends, labels and titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.3.4 Formatting text: LaTeX, fontsize, font family . . . . . . . . . . . . . . . . . . . . . . . 92
5.3.5 Setting colors, linewidths, linetypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.3.6 Control over axis appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.3.7 Placement of ticks and custom tick labels . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.3.8 Axis number and axis label spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.3.9 Axis grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.3.10 Axis spines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.3.11 Twin axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.3.12 Axes where x and y is zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.3.13 Other 2D plot styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.3.14 Text annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.3.15 Figures with multiple subplots and insets . . . . . . . . . . . . . . . . . . . . . . . . . 107
5.3.16 Colormap and contour figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4 3D figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.4.1 Animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.4.2 Backends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.5 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.6 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3