Contents

Python NumPy For Your Grandma - 3.10 Challenge: Psycho Parent

Setup

Eager to make your mark on the PTA, you decide the best way to hide eggs for for the upcoming Easter egg hunt is to use NumPy. You represent the field as a 10x10 array of 0s. Now your goal is to insert twenty random normal values at random (non repeating) locations in the grid that tell you how much candy to hide at each spot and where.

import numpy as np

field = np.zeros(shape = (10, 10))
print(field)
## [[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
##  [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

Solution

np.set_printoptions(linewidth=999)
generator = np.random.default_rng(1234)
vals = np.round(generator.normal(size = 20), 2)
locs = generator.choice(field.size, len(vals), replace = False)
field.ravel()[locs] = vals
print(field)
## [[ 0.52  0.    0.   -1.48  0.    2.91  0.    0.    0.    0.  ]
##  [ 0.   -1.27  0.    0.    0.   -1.6   0.    1.73  0.    0.  ]
##  [ 0.    0.    0.    0.    0.43  0.    0.    0.    0.    0.  ]
##  [ 0.    0.    0.    0.    0.    0.34  0.    0.    0.   -1.67]
##  [ 0.    0.86  0.74  0.    0.    0.    1.32  0.    0.52  0.  ]
##  [ 0.   -1.    0.    0.    0.    0.15  0.    0.    0.    0.  ]
##  [ 0.   -0.51  0.   -0.86  0.    0.    0.    0.    0.    0.  ]
##  [ 0.    0.    0.    0.    0.    0.    0.    0.    0.    0.  ]
##  [ 0.    0.    0.    0.   -2.16  0.    0.95  0.    0.    0.  ]
##  [ 0.    0.    0.    0.    0.    0.    0.    0.    0.    0.06]]

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