NumPy

NumPy is the fundamental package for scientific computing with Python.

Basics

One of the most commonly used functions of NumPy are NumPy arrays: The essential difference between lists and NumPy arrays is functionality and speed. lists give you basic operation, but NumPy adds basic statistics, linear algebra, histograms, etc.

The most important difference for data science is the ability to do element-wise calculations with NumPy arrays.

axis 0 always refers to row

axis 1 always refers to column

Operator Description Documentation
np.array([1,2,3]) 1d array link
np.array([(1,2,3),(4,5,6)]) 2d array see above
np.arange(start,stop,step) range array link
Operators Description Documentation
np.linspace(0,2,9) Add evenly spaced values btw interval to array of length link
np.zeros((1,2)) Create and array filled with zeros link
np.ones((1,2)) Creates an array filled with ones link
np.random.randint(0, 5, (5,5)) Creates random array link
np.empty((2,2)) Creates an empty array link

Examples

import numpy as np

# 1 dimensional
x = np.array([1,2,3])
# 2 dimensional
y = np.array([(1,2,3),(4,5,6)])

x = np.arange(3)
>>> array([0, 1, 2])

y = np.arange(3.0)
>>> array([ 0.,  1.,  2.])

x = np.arange(3,7)
>>> array([3, 4, 5, 6])

y = np.arange(3,7,2)
>>> array([3, 5])

Array

Array Properties

Syntax Description Documentation
array.shape Dimensions (Rows,Columns) link
len(array) Length of Array link
array.ndim Number of Array Dimensions link
array.size Number of Array Elements link
array.dtype Data Type link
array.astype(type) Converts to Data Type link
type(array) Type of Array link

Copying

Operators Descriptions Documentation
np.copy(array) Creates copy of array link
other = array.copy() Creates deep copy of array see above

Array Manipulation Routines

Slicing and Subsetting

Operator Description Documentation
array[i] 1d array at index i link
array[i,j] 2d array at index[i][j] see above
array[i<4] Boolean Indexing see above
array[0:3] Select items of index 0, 1 and 2 see above
array[0:2,1] Select items of rows 0 and 1 at column 1 see above
array[:1] Select items of row 0 (equals array[0:1, :]) see above
array[1:2, :] Select items of row 1 see above
[comment]: <> ( array[1,...] equals array[1,:,:]
array[ : :-1] Reverses array see above

Examples

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

# The index *before* the comma refers to *rows*,
# the index *after* the comma refers to *columns*
print(b[0:1, 2])
>>> [3]

print(b[:len(b), 2])
>>> [3 6]

print(b[0, :])
>>> [1 2 3]

print(b[0, 2:])
>>> [3]

print(b[:, 0])
>>> [1 4]

c = np.array([(1, 2, 3), (4, 5, 6)])
d = c[1:2, 0:2]
print(d)
>>> [[4 5]]


Combining Arrays

Operator Description Documentation
np.concatenate((a,b),axis=0) Concatenates 2 arrays, adds to end link
np.vstack((a,b)) Stack array row-wise link
np.hstack((a,b)) Stack array column wise link

Example

import numpy as np
a = np.array([1, 3, 5])
b = np.array([2, 4, 6])

# Stack two arrays row-wise
print(np.vstack((a,b)))
>>> [[1 3 5]
     [2 4 6]]

# Stack two arrays column-wise
print(np.hstack((a,b)))
>>> [1 3 5 2 4 6]

Shaping Arrays

Operator Description Documentation
other = ndarray.flatten() Flattens a 2d array to 1d link
ravel Return a contiguous flattened array link
reshape reshape an array link
resize Return a new array with the specified shape link
array = np.transpose(other)
array.T
Transpose array link

Mathematics

Operations

Operator Description Documentation
np.add(x,y)
x + y
Addition link
np.substract(x,y)
x - y
Subtraction link
np.divide(x,y)
x / y
Division link
np.multiply(x,y)
x * y
Multiplication link
np.sqrt(x) Square Root link
np.sin(x) Element-wise sine link
np.cos(x) Element-wise cosine link
np.log(x) Element-wise natural log link
np.dot(x,y) Dot product, x @ y link

Remember: NumPy array operations work element-wise.

Example

# If a 1d array is added to a 2d array (or the other way), NumPy
# chooses the array with smaller dimension and adds it to the one
# with bigger dimension
a = np.array([1, 2, 3])
b = np.array([(1, 2, 3), (4, 5, 6)])
print(np.add(a, b))
>>> [[2 4 6]
     [5 7 9]]

Comparison

Operator Description Documentation
np.array_equal(x,y) Array-wise comparison link

Example

# Using comparison operators will create boolean NumPy arrays
z = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
c = z < 6
print(c)
>>> [ True  True  True  True  True False False False False False]

More (Reduction)

Operator Description Documentation
array.sum() Array-wise sum link
array.min() Array-wise minimum value link
array.max(axis=0) Maximum value of specified axis