MCS 275 Spring 2022

David Dumas

Course bulletins:

- Project 3 due 6pm Friday 18 March.
- Project 3 autograder will open on Monday.

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.

In 2004, Tim Peters wrote a list of principles that describe the design of Python. One is:

There should be one---and preferably only one---obvious way to do it.

In contrast, numpy often offers many ways to accomplish a given task, allowing the user to decide which is best.

Numpy is *big*, but you can be productive after learning a small subset.

Let's continue working in the numpy introduction notebook.

`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.

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.

If `A`

is an array and `M`

is an array of `bool`

of the same shape, then `A[M]`

refers to a 1D array that lists 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`

.

*Python Data Science Handbook*by Jake VanderPlas- Chapter 2 contains the introduction to numpy.
- There is also a print edition from O'Reilly.

- 2021-03-11 Initial publication