```
[[3.14159265 3.14159265 3.14159265 3.14159265 3.14159265]
[3.14159265 0. 0. 0. 3.14159265]
[3.14159265 0. 0. 0. 3.14159265]
[3.14159265 0. 0. 0. 3.14159265]
[3.14159265 3.14159265 3.14159265 3.14159265 3.14159265]]
```

# Homework 4

Due: Feb 17 by 11:55 pm (London ON time)

Submit your Jupyter Notebook to OWL

Note that you don’t need to complete each question using a single Python command. You may use multiple lines of code. Also note that there is not one single correct way of completing each question. There are many ways you might code up the solution to each.

## NumPy Exercises

Create a

`5x5`

2D array with \(\pi\) on the border and`0`

inside and print it to the screen.Consider the

`1x10`

1D array`Z`

:`= np.array([3,1,4,1,5,9,2,6,5,3]) Z print(Z)`

`[3 1 4 1 5 9 2 6 5 3]`

Compute the sum of squared elements of

`Z`

and print it to the screen:`207`

Set NumPy’s random number generator seed to

`9040`

. Then create a`10x5`

2D array containing random integers between 10 and 20, inclusive and print it to the screen:`9040) np.random.seed(`

`[[10 11 12 16 14] [14 18 18 18 13] [16 18 16 17 15] [13 20 15 16 10] [16 17 13 17 12] [11 12 10 13 14] [17 18 16 15 13] [13 16 13 10 18] [13 12 17 19 12] [20 11 17 13 10]]`

Consider a

`1x10`

1D array of integers`Z`

:`9040) np.random.seed(= np.random.randint(0,1000,10) Z`

Print out the unique elements of

`Z`

, sorted in descending order (largest first, smallest last):`[942 898 884 838 728 703 689 516 509 416]`

Construct a

`1x50`

array`Z`

containing the sequence`5,4,3,2,1`

repeated 10 times:`[5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1 5 4 3 2 1]`

## Matplotlib exercises

Define a 1D array

`x`

containing 10 values starting at 0, ending at 0.9, in increments of 0.1. Define a vector`y`

that is equal to`np.sin(2 * np.pi * x)`

. Generate a line plot with`x`

on the horizontal axis and`y`

on the vertical axis. Use blue circles at each data point (markersize of 8.0), connected by blue solid lines, with a linewidth of 2.0. Label the horizontal axis`x`

and the vertical axis`y`

. Set the range on the horizontal axis so it goes from 0 to 0.9 in steps of 0.1, and on the vertical axis so it goes from -1 to 1 in steps of 0.2.Define 1D arrays

`y1`

equal to`[1,2,3,4,4]`

,`y2`

equal to`[1,5,6,8,10]`

, and`y3`

equal to`[5,4,2,1,1]`

. Generate a multi-line plot using squares (markersize 6.0) connected with solid lines (linewidth 1.0). Label the axes as shown, and set axis limits and axis ticks as shown. Add a legend as shown. The`y1`

colour is blue, the`y2`

colour is red, and the`y3`

colour is magenta.Define a 100-length 1D array

`x`

starting at 1 and ending at 100 in increments of 1. Define`y`

equal to`(x * 0.15) + N`

where N is a 100 element 1D array of random values chosen from a gaussian distribution with mean 0.0 and standard deviation 0.5. Let`z`

be equal to`((x * 0.05) + 2) + N2`

where`N2`

is a 100 element 1D array of random values chosen from a gaussian distribution with mean 0.0 and standard deviation 2.0. Generate a scatterplot as shown below, using filled circles (markersize 3.0). The`y`

colour is blue and the`z`

colour is red. Pay attention to the axis labels, tick marks, and ranges. At the beginning of your answer set the random seed (once) to be equal to`9040`

so that we all get the same random values, using`np.random.seed(9040)`

.Re-plot the data from Question 8 using subplots, as shown below. Try to replicate the axis limits, and axis labeling. Use boldface font to add a title to each subplot (A, B, and C, aligned to the left of each subplot as shown below).

Hint: adjust the

`hspace`

parameter for subplots so that the subplots don’t overlap, e.g.`plt.subplots_adjust(hspace=0.6)`

.

Hint:`ax.spines["top"].set_visible(False)`

will turn off the top part of the box outlining each plot.

Do your best to replicate all of the elements of the Figure. If you can’t replicate every little part of it don’t worry, but challenge yourself to try to get as close as you can. I will post a sample solution after the deadline.