NumPy and 1D Arrays

import numpy as np

What is NumPy?

NumPy -> “Numerical Python extensions”.

NumPy offers:

  • Arrays
  • Mathematical Constants
  • Mathematical Functions

So What is an Array?

my_list = [1, 2, 3, 4, 5]
my_list
[1, 2, 3, 4, 5]


my_array = np.array((1, 2, 3, 4, 5))
my_array
array([1, 2, 3, 4, 5])


type(my_array)
numpy.ndarray
my_list = [1,"hi"]


my_array = np.array((1, "hi"))
my_array
array(['1', 'hi'], dtype='<U21')

Creating 1D Arrays

my_array = np.array([1, 2, 3, 4])
my_array
array([1, 2, 3, 4])


np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])


np.ones(4)
array([1., 1., 1., 1.])
np.arange(5)
array([0, 1, 2, 3, 4])


np.arange(0, 10, 2) 
array([0, 2, 4, 6, 8])
np.linspace(1,5,10)
array([1.        , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5.        ])


np.random.rand(5) 
array([0.62829637, 0.57296753, 0.24707966, 0.11383094, 0.27442737])

Elementwise operations

array1 = np.ones(4)
array1
array([1., 1., 1., 1.])


array2 = array1 + 1
array2
array([2., 2., 2., 2.])


array1 + array2
array([3., 3., 3., 3.])


array1 * array2
array([2., 2., 2., 2.])
list_1 = [1, 1, 1, 1]


list_1 + 1
TypeError: can only concatenate list (not "int") to list

Detailed traceback: 
  File "<string>", line 1, in <module>
list_1 = [ 1, 1, 1, 1]

list_2 =  [elem + 1 for elem in list_1]
list_2
[2, 2, 2, 2]


list_3 = []

for index in range(len(list_1)):
  list_3.append(list_1[index] + list_2[index])
  
list_3
[3, 3, 3, 3]

Slicing and Indexing 1D Arrays

arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])


arr[7]
np.int64(7)


arr[2:6]
array([2, 3, 4, 5])


arr[-1]
np.int64(9)

Boolean Indexing

grade_array = np.array([98, 87, 103, 92, 67, 107, 78, 104, 85, 105])
grade_array
array([ 98,  87, 103,  92,  67, 107,  78, 104,  85, 105])


threshold = np.array([98, 87, 103, 92, 67, 107, 78, 104, 85, 105]) > 100
threshold
array([False, False,  True, False, False,  True, False,  True, False,  True])


grade_array[threshold] = 100
grade_array
array([ 98,  87, 100,  92,  67, 100,  78, 100,  85, 100])
new_grade_array = np.array([98,87,103, 92,67, 107, 78, 104, 85, 105])
new_grade_array
array([ 98,  87, 103,  92,  67, 107,  78, 104,  85, 105])


new_grade_array[new_grade_array > 100] = 100
new_grade_array
array([ 98,  87, 100,  92,  67, 100,  78, 100,  85, 100])

Why NumPy?

cereal.head()
name mfr type calories ... shelf weight cups rating
0 100% Bran N Cold 70 ... 3 1.0 0.33 68.402973
1 100% Natural Bran Q Cold 120 ... 3 1.0 1.00 33.983679
2 All-Bran K Cold 70 ... 3 1.0 0.33 59.425505
3 All-Bran with Extra Fiber K Cold 50 ... 3 1.0 0.50 93.704912
4 Almond Delight R Cold 110 ... 3 1.0 0.75 34.384843

5 rows × 16 columns


type(cereal.loc[3,'calories'])
numpy.int64


cereal['calories'].to_numpy()
array([ 70, 120,  70,  50, 110, 110, 110, 130,  90,  90, 120, 110, 120, 110, 110, 110, 100, 110, 110, 110, 100, 110, 100, 100, 110, 110, 100, 120, 120, 110, 100, 110, 100, 110, 120, 120, 110, 110, 110, 140, 110, 100, 110, 100, 150, 150, 160, 100, 120, 140,  90, 130, 120, 100,  50,  50, 100, 100, 120, 100,  90, 110, 110,  80,  90,  90, 110, 110,  90, 110, 140, 100, 110, 110, 100, 100, 110])

NumPy Constants and Functions

404 image

np.pi
3.141592653589793


404 image

np.inf
inf


404 image

np.e
2.718281828459045

NumPy Functions

np.prod([2, 3, 1])
np.int64(6)


np.diff([2, 5, 20])
array([ 3, 15])


np.log10(100)
np.float64(2.0)


The full list of mathematical functions are available at this NumPy website.

Let’s apply what we learned!