Contents

Python NumPy For Your Grandma - 3.5 nan

In this section, we’ll see how you can use nan to represent missing or invalid values.

nan is a floating point constant that numpy reserves and treats specially. For example, consider this array called bot which contains 2 missing values.

import numpy as np

bot = np.ones(shape = (3, 4))
bot[[0, 2], [1, 2]] = np.nan
print(bot)
## [[ 1. nan  1.  1.]
##  [ 1.  1.  1.  1.]
##  [ 1.  1. nan  1.]]

If you want to identify which elements of bot are nan, you might be inclined to do something like bot == np.nan but the result may surprise you.

bot == np.nan
## array([[False, False, False, False],
##        [False, False, False, False],
##        [False, False, False, False]])

NumPy designed nan so that nan == nan returns False, but nan != nan returns True.

np.nan == np.nan
## False
np.nan != np.nan
## True

This is because equivalence between missing or invalid values is not well defined. In practice, this behavior prevents silent bugs from creeping into your program.

In order to see which elements of bot are nan, you can use NumPy’s isnan() function.

np.isnan(bot)
## array([[False,  True, False, False],
##        [False, False, False, False],
##        [False, False,  True, False]])

It’s important to note that nan is a special floating point constant, so it can only exist inside an array of floats. If you try inserting nan into an array of integers, booleans, or strings, you’ll get an error or unexpected behavior.

foo = np.array([1, 2, 3], dtype = 'int64')
foo[1] = np.nan  # error

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