# Lecture 26

## Numpy II

MCS 275 Spring 2022
David Dumas

### Lecture 26: Numpy II

Course bulletins:

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

## Where we left off

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.

## The zen of Python

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.

## The zen of numpy

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.

## Bool gotcha

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)

## Ufuncs

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.

Details on the rules for broadcasting in VanderPlas.

## Aggregations

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.