100% satisfaction guarantee Immediately available after payment Both online and in PDF No strings attached
logo-home
PYTHON NOTES FOR PROGRAMMING R150,00   Add to cart

Class notes

PYTHON NOTES FOR PROGRAMMING

 7 views  0 purchase

PYTHON CODES AND INSTRUCTIONS FOR LEARNING HOW TO CODE

Preview 4 out of 177  pages

  • June 2, 2022
  • 177
  • 2020/2021
  • Class notes
  • Dr fareo
  • All classes
All documents for this subject (7)
avatar-seller
camarafantaj1
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

The benefits of buying summaries with Stuvia:

Guaranteed quality through customer reviews

Guaranteed quality through customer reviews

Stuvia customers have reviewed more than 700,000 summaries. This how you know that you are buying the best documents.

Quick and easy check-out

Quick and easy check-out

You can quickly pay through EFT, credit card or Stuvia-credit for the summaries. There is no membership needed.

Focus on what matters

Focus on what matters

Your fellow students write the study notes themselves, which is why the documents are always reliable and up-to-date. This ensures you quickly get to the core!

Frequently asked questions

What do I get when I buy this document?

You get a PDF, available immediately after your purchase. The purchased document is accessible anytime, anywhere and indefinitely through your profile.

Satisfaction guarantee: how does it work?

Our satisfaction guarantee ensures that you always find a study document that suits you well. You fill out a form, and our customer service team takes care of the rest.

Who am I buying this summary from?

Stuvia is a marketplace, so you are not buying this document from us, but from seller camarafantaj1. Stuvia facilitates payment to the seller.

Will I be stuck with a subscription?

No, you only buy this summary for R150,00. You're not tied to anything after your purchase.

Can Stuvia be trusted?

4.6 stars on Google & Trustpilot (+1000 reviews)

67096 documents were sold in the last 30 days

Founded in 2010, the go-to place to buy summaries for 14 years now

Start selling
R150,00
  • (0)
  Buy now