0% found this document useful (0 votes)
37 views47 pages

cs224n Python Review 20

The document provides an introduction to Python for the CS224N course, covering topics such as installing Python, Python syntax, NumPy, and plotting. It discusses what Python is, the pros and cons of Python, how to install and run Python, basic Python concepts like data types and functions, and how to use NumPy for vector and matrix operations as well as mathematical functions on NumPy arrays. Examples are given throughout to demonstrate Python, NumPy, and plotting concepts.

Uploaded by

Jill
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views47 pages

cs224n Python Review 20

The document provides an introduction to Python for the CS224N course, covering topics such as installing Python, Python syntax, NumPy, and plotting. It discusses what Python is, the pros and cons of Python, how to install and run Python, basic Python concepts like data types and functions, and how to use NumPy for vector and matrix operations as well as mathematical functions on NumPy arrays. Examples are given throughout to demonstrate Python, NumPy, and plotting concepts.

Uploaded by

Jill
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

CS224N

Python Introduction
Plan for Today

● Intro to Python
● Installing Python
● Python Syntax
● Numpy
● Python Demo
Intro to Python
What is Python?

● General-purpose, high-level scripting language


● Used for a wide variety of purposes including networking
and web applications
● Most popular in the scientific community for its ease of
use
Pros vs Cons

● Pros: ● Cons:
○ Easy to understand and write, ○ Python can be slow
very similar to English
○ Not great for mobile
○ Works across systems development
(Windows, Mac, Linux)
○ Dynamically typed?
○ Object Oriented

○ Really great standard library

○ Dynamically typed?
Installing
Python
Installing and Running Python
● Download from Anaconda:
https://www.anaconda.com/distribution/
○ Includes Python, as well as several packages for scientific computing
● In your terminal, start up the Anaconda installation of
Python:
○ conda activate
● Because Python is a scripting language, you can try it out
right in the terminal; just type: python
● Follow instructions on Assign1 to create ‘environments’
○ Help keep your projects separated so there aren’t conflicting installations!
Check Your Installation

Which
environment I
am using (this is
the default)

Python in the
terminal! This will
be helpful for
Numpy when you
want to test
broadcasting
(more on this
later)
Writing Programs
● For longer tasks, probably want to write in a program that
you can run on command
● To write programs, people often use IDEs
○ Pycharm (can get professional version for free since you are a student!)

○ Sublime (after modification with plugins)

○ VSCode (after modification with plugins)


● IDEs include lots of nice bells and whistles like code
completion, syntax checking and a debugger
● If you choose to just use a text editor, you can run your
program from the terminal by using the command:
python <filename>.py
Basic Python
Basic data structures

● None of these types have a fixed type: can contain


anything
● Sets will remove duplicates; only one copy of ‘four’
More on Lists

● Can easily create 2D arrays and then index into them


● List comprehensions are a slick way to create lists
Sorting Lists

● Sorted function lets you sort a list


● Has additional ‘key’ parameter to which you can pass a
function that tells sorted how to compare
● For more details, look up ‘lambda functions’
Functions, Loops and Control Flow

Integers in [0, a)

Boolean
statements

Integers from 1
(inclusive) to b
(exclusive),
counting by 2

If called from command line


Classes

Initialize the class to


get an instance using
some parameters

Instance variable

Does something
with the instance
To use a class

Instantiate a class,
get an instance

Call an instance method


Numpy & Scipy
What is Numpy? What is Scipy?

● Numpy – package for vector and matrix multiplication


● Scipy – package for scientific and technical computing
● The main advantage of numpy and scipy are their speed
● Speed comes from efficient memory representation and
low-level machine instructions
Ndarray

● Most important structure in numpy


● Can only contain one type of value
● Extremely fast
● Used to represent vectors, matrices, tensors
● Calling myArray.shape will return a tuple of integers that
represent the shape of the ndarray – very important!
Ndarray – Addition (same shape)

● When two Ndarrays are the same shape, addition acts


exactly as you would expect: component wise!
● We will discuss the case when they are not the same
shape later
Ndarray – Addition (same shape,
example 1)
Ndarray – Addition (same shape,
example 2)
Ndarray – Component-Wise
Multiplication (same shape)

● When two ndarrays are the same dimension and you use
the python multiplication operator (*) you get component-
wise multiplication, not matrix multiplication!
● When we get to neural networks, we will see that this
Hadamard product is very important
Ndarray – Component-Wise
Multiplication (same shape,
example 1)
Ndarray – np.dot

● Vector-Vector, Matrix-Vector and Matrix-Matrix products


are calculated using np.dot()
● As with most numpy functions, they behave differently
depending on the shapes of the input; we will look at the
most common uses
Ndarray – np.dot with two vectors

● When the two inputs to np.dot() are both 1d vectors, then


the result is the standard dot product
Ndarray – np.dot with matrix and
vector
● In this case, np.dot() acts as matrix-vector multiplication
● Note that dimensions matter!
Ndarray – np.dot with two matrices

● Here, we have standard matrix multiplication


● However, numpy documentation says that it is preferable
to use np.matmul()
Ndarray – np.dot with two
matrices (example)
Broadcasting

● In math, operations like dot products and matrix addition


require the samec dimensions. In numpy, this is not the
case
● Up until now, we have used 1d and 2d ndarrays,
representing vectors and matrices, and numpy acts as we
would expect
● However, the operations we have described work even
when the two inputs do not have ‘standard’ shapes, given
by a set of very specific rules
General Broadcasting Rules

● Write out the shapes of each ndarray


● Starting from the back, that dimension has compatible
values if either:
○ They are the same value, or

○ One of them is a 1
● The size of the resulting array is the maximum along each
dimension
● Note: the two ndarrays do not need to have the same
number of dimensions
Broadcasting – Example 1
(easiest)
● In this case, we add a scalar to an ndarray
● Numpy automatically adds the scalar to every single
element
Broadcasting – Example 2
(medium)
Broadcasting – Example 3
(hardest)
● From the np.matmul() documentation:
○ If either argument is N-D, N > 2, it is treated as a stack of matrices
residing in the last two indexes and broadcast accordingly.
● What will be the dimension of the output for a call with
the following shapes?
○ (1, 5, 6), (6, 7) ○ (3, 4, 5, 6), (6, 7)

○ (3, 5, 6), (6, 7) ○ (3, 4, 5, 6), (4, 6, 7)

○ (3, 5, 6), (3, 6, 7) ○ (3, 4, 5, 6), (1, 4, 6, 7)


Broadcasting – Example 3
(hardest, one answer)
● Take the fifth example, the shapes are (3, 4, 5, 6) and (4,
6, 7)
● According to the documentation, the last two dimensions
represent matrices, so we take those out and broadcast
the rest: (3, 4) and (4,)
● Using our broadcasting rules, the result of broadcasting
these shapes will be (3, 4)
● Matrix multiplication results in a matrix of shape (5, 7)
● Our output will have shape (3, 4, 5, 7)
Mathematical Functions on
Ndarrays
● Numpy has a wide array of mathematical functions that
you can apply to arrays
Mathematical Functions on
Ndarrays – cont.
● Some functions, like sum and max, can be applied along a
given axis
● Applying along that dimension gets rid of that dimension,
and replaces it with the function applied across that
dimension
Numpy Speed – Dot Product
Numpy Speed – Applying a Function
Popular usage, read before use!
Python Command Description

scipy.linalg.inv Inverse of matrix (numpy as equivalent)

scipy.linalg.eig Get eigen value (Read documentation on eigh and numpy equivalent)

scipy.spatial.distance Compute pairwise distance

np.matmul Matrix multiply

np.zeros Create a matrix filled with zeros (Read on np.ones)

np.arange Start, stop, step size (Read on np.linspace)

np.identity Create an identity matrix

np.vstack Vertically stack 2 arrays (Read on np.hstack)


Your friend for debugging

Python Command Description

array.shape Get shape of numpy array

array.dtype Check data type of array (for precision, for weird behavior)

type(stuff) Get type of a variable

import pdb; pdb.set_trace() Set a breakpoint (https://docs.python.org/3/library/pdb.html)

print(f’My name is {name}’) Easy way to construct a message


Advice

● If you are unsure how an operation will work on ndarrays


of a certain shape, try it out!
● Create random matrices that have the shape you are
looking at, do the operation, and check the shape of the
output
● Python scripting in the terminal is great for this!
Plotting
More Tools
● Scatter plot
● Line plot
● Bar plot (Histogram)
● 3D plot
Plotting Functions
Python Live Demo in PyCharm

● Calculate the eigenvector associated with the dominant


eigenvalue
● Use the power iteration method:
&'(
● 𝑏"#$ = ||&'( ||
● (If not at live session, can download the code from course
website)
Links

Python Documentation

Numpy Reference

CS 231N Python Tutorial

Download Pycharm

You might also like