Contents

Python NumPy For Your Grandma - 2.6 Basic Math On Arrays

In this section, we’ll take a look at some basic math operations between arrays.

We’ll start by defining a pair of two by two arrays, foo and bar.

import numpy as np
foo = np.array([[4,3], [1,0]])
print(foo)
## [[4 3]
##  [1 0]]
bar = np.array([[1,2], [3,4]])
print(foo)
## [[4 3]
##  [1 0]]

If we add foo plus bar, watch what happens.

foo + bar
## array([[5, 5],
##        [4, 4]])

The values of foo and bar get added element-wise. This pattern of element-wise addition holds true for every math operation between identically sized arrays.

For example, if we subtract bar from foo, it does element-wise subtraction.

foo - bar
## array([[ 3,  1],
##        [-2, -4]])

If we multiply foo by bar, it does element-wise multiplication.

foo * bar
## array([[4, 6],
##        [3, 0]])

And if we divide foo by bar, it does element-wise division.

foo / bar
## array([[4.        , 1.5       ],
##        [0.33333333, 0.        ]])

Now, if you wanted to do matrix multiplication instead of element-wise multiplication, you can do that too using the @ symbol, like foo @ bar.

foo @ bar
## array([[13, 20],
##        [ 1,  2]])

Now suppose we want to add a scalar like 5 to each element of foo. You might be inclined to build a 4x4 array array filled with 5s and then carry out the addition, which works, but it’s overkill.

foo + np.full(shape=foo.shape, fill_value=5)
## array([[9, 8],
##        [6, 5]])

All you need to do in this case is foo + 5 and NumPy will add 5 to each element of foo. The same goes for subtraction multiplication, division, and all other binary arithmetic operations.

foo + 5
## array([[9, 8],
##        [6, 5]])

Course Curriculum

  1. Introduction
    1.1 Introduction
  2. Basic Array Stuff
    2.1 NumPy Array Motivation
    2.2 NumPy Array Basics
    2.3 Creating NumPy Arrays
    2.4 Indexing 1-D Arrays
    2.5 Indexing Multidimensional Arrays
    2.6 Basic Math On Arrays
    2.7 Challenge: High School Reunion
    2.8 Challenge: Gold Miner
    2.9 Challenge: Chic-fil-A
  3. Intermediate Array Stuff
    3.1 Broadcasting
    3.2 newaxis
    3.3 reshape()
    3.4 Boolean Indexing
    3.5 nan
    3.6 infinity
    3.7 random
    3.8 Challenge: Love Distance
    3.9 Challenge: Professor Prick
    3.10 Challenge: Psycho Parent
  4. Common Operations
    4.1 where()
    4.2 Math Functions
    4.3 all() and any()
    4.4 concatenate()
    4.5 Stacking
    4.6 Sorting
    4.7 unique()
    4.8 Challenge: Movie Ratings
    4.9 Challenge: Big Fish
    4.10 Challenge: Taco Truck
  5. Advanced Array Stuff
    5.1 Advanced Array Indexing
    5.2 View vs Copy
    5.3 Challenge: Population Verification
    5.4 Challenge: Prime Locations
    5.5 Challenge: The Game of Doors
    5.6 Challenge: Peanut Butter
  6. Final Boss
    6.1 as_strided()
    6.2 einsum()
    6.3 Challenge: One-Hot-Encoding
    6.4 Challenge: Cumulative Rainfall
    6.5 Challenge: Table Tennis
    6.6 Challenge: Where’s Waldo
    6.7 Challenge: Outer Product

Additional Content

  1. Python Pandas For Your Grandpa
  2. Neural Networks For Your Dog
  3. Introduction To Google Colab