(c) 2016 Justin Bois. This work is licensed under a Creative Commons Attribution License CC-BY 4.0. All code contained herein is licensed under an MIT license.
This tutorial was generated from a Jupyter notebook. You can download the notebook here.
# NumPy, the engine of scientific computing
import numpy as np
Numpy arrays can take a while to get the hang of. Therefore, it's important to practice practice practice!
The functions np.arange()
and np.linspace()
are really useful.
np.arange?
, or by reading the respective webpages (np.arange
, np.linspace
)).np.arange()
to make an array of numbers 0 through 10.np.linspace()
.float
.In the last lesson, we looked at a data set from Harvey and Orbidans on the cross-sectional area of C. elegans eggs. Recall, we loaded the data like this:
# Load in data
xa_high = np.loadtxt('data/xa_high_food.csv', comments='#')
xa_low = np.loadtxt('data/xa_low_food.csv', comments='#')
Now we would like to compute the diameter of the egg from the cross-sectional area. Write a function that takes in an array of cross-sectional areas and returns an array of diameters. Recall that the diameter $d$ and cross-sectional area $A$ are related by $A = \pi d^2/4$. There should be no for
loops in your function!
Below, is a skeleton for your function for you to fill in.
def xa_to_diameter(xa):
"""
Convert an array of cross-sectional areas
to diameters with commensurate units.
"""
# Compute diameter from area
diameter = ____
return diameter
Use your function to compute the diameters of the eggs.
Numpy enables you do to matrix calculations on two-dimensional arrays. In exercise, you will practice doing matrix calculations on arrays. We'll start by making a matrix and a vector to practice with. You can copy the code below into your script or IPython shell.
A = np.array([[6.7, 1.3, 0.6, 0.7],
[0.1, 5.5, 0.4, 2.4],
[1.1, 0.8, 4.5, 1.7],
[0.0, 1.5, 3.4, 7.5]])
b = np.array([1.1, 2.3, 3.3, 3.9])
First, let's practice slicing.
A
.A
.A
that is greater than 2.A
. using the np.diag()
function.The np.linalg
module has some powerful linear algebra tools.
np.linalg.solve()
. Store your answer in the Numpy array x
.np.dot(A, x)
to verify that $\mathsf{A}\cdot \mathbf{x} = \mathbf{b}$.np.transpose()
to compute the transpose of A
.np.linalg.inv()
to compute the inverse of A
.Sometimes you want to convert a two-dimensional array to a one-dimensional array. This can be done with np.ravel()
.
B = np.ravel(A)
.np.reshape()
. Then, reshape B
to make it look like A
again.