2.2.2. Numerical computing with NumPy

NumPy is the most popular numerical computing package for Python. The following examples illustrate the basic functionality of NumPy.

2.2.2.1. Array construction

import numpy
arr = numpy.array([[1, 2, 3], [4, 5, 6]]) # a 2x3 matrix with elements equal to 1..6
arr = numpy.empty((2, 2)) # a 2x2 matrix with each element equal to a randomly selected number
arr = numpy.zeros((2, 2)) # a 2x2 matrix with each element equal to 0.0
arr = numpy.ones((3, 4)) # a 2x3 matrix with each element equal to 1.0
arr = numpy.full((2, 3), 2.0) # a 2x3 matrix with each element equal to 2.0

2.2.2.2. Concatenation

arr1 = numpy.array([...])
arr2 = numpy.array([...])
numpy.concatenate(arr1, arr2)

2.2.2.3. Query the shape of an array

arr = numpy.array([...])
arr.shape()

2.2.2.4. Reshaping

arr = numpy.array([...])
arr.reshape((n_row, n_col, ...))

2.2.2.5. Selection and slicing

arr = numpy.array([[1, 2, 3], [4, 5, 6]])
arr[1, 2] # get the value at second row and third column
arr[0, :] # get the first row
arr[:, 0] # get the first column

2.2.2.6. Transposition

arr = numpy.array([...])
arr_trans = arr.transpose()

2.2.2.7. Algebra

arr1 = numpy.array([...])
arr2 = numpy.array([...])

arr1 + 2 # element-wise addition
arr1 - 2 # element-wise subtraction
arr1 + arr2 # matrix addition
arr1 - arr2 # matrix subtraction

2. * arr # scalar multiplication
arr1 * arr2 # element-wise multiplication
arr1.dot(arr2) # matrix multiplication

arr ** 2. # element-wise exponentiation

2.2.2.8. Trigonometry

arr = numpy.array([...])

numpy.sin(arr) # element-wise sine
numpy.cos(arr) # element-wise cosine
numpy.tan(arr) # element-wise tangent
numpy.asin(arr) # element-wise inverse sin
numpy.acos(arr) # element-wise inverse cosign
numpy.atan(arr) # element-wise inverse tangent

2.2.2.9. Other mathematical functions

numpy.sqrt(arr) # element-wise square root
numpy.ceil() # element-wise ceiling
numpy.floor() # element-wise floor
numpy.round() # element-wise round

2.2.2.10. Data reduction

arr = numpy.array([...])

arr.all() # determine if all of the values are logically equivalent to `True`
arr.any() # determine if any of the values are logically equivalent to `True`
arr.sum() # sum
arr.mean() # mean
arr.std() # standard deviation
arr.var() # variance
arr.min() # minimum
arr.max() # maximum

2.2.2.11. Random number generation

# set the state of the random number generator to reproducibly generate random values
numpy.random.seed(1)

# select a float, randomly between 0 and 1
numpy.random.rand()

# select a random integer between 0 and 10
numpy.random.randint(10)

# select a random integer according to a Poisson distribution with :math:`\lambda = 2`
numpy.random.poisson(2.)

2.2.2.12. NaN and infinity

arr = numpy.array([...])

numpy.nan
numpy.isnan(arr)

numpy.inf
numpy.isinf(arr)
numpy.isfinite(arr)

2.2.2.13. Exercises

  • Concatenate two 3x1 arrays of zeros and ones, and get its shape
  • Select the first column of a random 2x3 array
  • Transpose a random 2x3 array into a 3x2 array
  • Reshape a random 2x3 array into a 3x2 array
  • Create a random 2x3 array and round it
  • Create a random 100x1 array of Poisson-distributed values with lambda = 10 and calculate its min, max, mean, and standard deviation
  • Calculate the element-wise multiplication of two random arrays of size 3x3
  • Calculate the matrix multiplication of two random arrays of size 2x3 and 3x4
  • Check that infinity is greater than \(10^{10}\)

See intro_to_wc_modeling/concepts_skills/software_engineering/numpy_exercises.py for solutions to these exercises.

2.2.2.14. NumPy introduction for MATLAB users

The NumPy documentation contains a concise summary of the NumPy analog for each MATLAB function.