MCS 275 Spring 2024
Emily Dumas
Reminders and announcements:
python3 -m pip install matplotlib
The numpy
module is used for multidimensional typed arrays.
Vectors (1D arrays) and matrices (2D arrays) are the most frequently used.
Last time we explored ways to make arrays and access elements.
Let's continue working in the numpy introduction notebook
2D arrays: identity matrix, transpose
np.array([5,0,1])==np.array([0,0,0])
evaluates to
np.array([False,True,False])
and numpy arrays do not support boolean coercion so this cannot appear in if
.
To test if two arrays are equal, use one of:
np.all(A==B)
np.array_equal(A,B)
Numpy's "ufuncs" or universal functions are functions that can be applied directly to arrays, automatically acting on each element.
Numpy provides a lot of these. Some built-in Python operations work this way, too.
Usually, ufuncs allow you to avoid explicit iteration over array elements (which is much slower).
If an operation expects arrays of the same dimension, but different dimensions are given, numpy attempts to fix this by broadcasting—using duplication to extend an array to a higher dimension.
E.g. A+1
works when A
is a numpy array. It adds 1
to each
entry. But how?
Broadcasting first turns 1
into an array with the same shape as A
where
each entry is 1
.
Numpy has operations like sum, product, max, min, all, any, that reduce array dimension.
Suppose:
A
is an arrayM
is an array of bool
of same shapeThen A[M]
gives a vector that lists all elements of A
at positions where
M
is True
.
Often used to test or modify elements of an array that meet certain criteria, e.g.
A[A>5]=5
.
Array to image: Pillow has Image.fromarray(...)
Image to array: np.array(...)
accepts images.
SLOW: Image + getpixel / putpixel
FAST: Image → array → processed array → Image