Contents

Python NumPy For Your Grandma - 5.5 Challenge: The Game of Doors

Setup

You’re preparing for a game show where you play the following game.

You’re faced with four doors. Behind one door is cash money, and behind the other three doors is steaming pile of broccoli. If you pick the door with money, you get the option to play again at the risk of losing the money you’ve collected thus far. If you keep winning, you can play a maximum of three rounds before the game show host kicks you off his show.

You have some strategy ideas you’d like to evaluate before you go on the show. So you hired an unpaid intern to scour through historic recordings of the show and log data on where prizes were located and the value of each prize. Your intern gets back to you with the following matrices:

  • prize_doors: Here, element (i,j) gives the door hiding the prize in round j of the ith game
  • prizes: Here (i, j) gives the prize amount in round j of the ith game

Build a 5x3x4 matrix where (i,j,k) represents the prize behind door k of round j of game i.

import numpy as np

prize_doors = np.array([
    [1, 0, 2],
    [0, 0, 1],
    [3, 3, 1],
    [1, 2, 0],
    [2, 1, 1]
])

prizes = np.array([
    [100, 150, 500],
    [200, 300, 250],
    [150, 100, 325],
    [425, 200, 100],
    [200, 250, 300]
])

Solution

answer = np.zeros((5, 3, 4))
answer[np.arange(5)[:, None], np.arange(3)[None, :], prize_doors] = prizes
print(answer)
## [[[  0. 100.   0.   0.]
##   [150.   0.   0.   0.]
##   [  0.   0. 500.   0.]]
## 
##  [[200.   0.   0.   0.]
##   [300.   0.   0.   0.]
##   [  0. 250.   0.   0.]]
## 
##  [[  0.   0.   0. 150.]
##   [  0.   0.   0. 100.]
##   [  0. 325.   0.   0.]]
## 
##  [[  0. 425.   0.   0.]
##   [  0.   0. 200.   0.]
##   [100.   0.   0.   0.]]
## 
##  [[  0.   0. 200.   0.]
##   [  0. 250.   0.   0.]
##   [  0. 300.   0.   0.]]]

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