Numpy basics
Arrays
Section titled “Arrays”Number of dimensions is rank of the array.
Shape of the array is a tuple of integers giving the size of the array along each dimension.
Array indexing
Section titled “Array indexing”Several ways
Slicing
Section titled “Slicing”import numpy as np
# Create the following rank 2 array with shape (3, 4)# [[ 1 2 3 4]# [ 5 6 7 8]# [ 9 10 11 12]]a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
# Use slicing to pull out the subarray consisting of the first 2 rows# and columns 1 and 2; b is the following array of shape (2, 2):# [[2 3]# [6 7]]b = a[:2, 1:3]
# A slice of an array is a view into the same data, so modifying it# will modify the original array.print(a[0, 1]) # Prints "2"b[0, 0] = 77 # b[0, 0] is the same piece of data as a[0, 1]print(a[0, 1]) # Prints "77"Resulting array view will always share the same data buffer as the original
array. Can check this with np.may_share_memory(a, b).
Integer array indexing
Section titled “Integer array indexing”import numpy as np
a = np.array([[1,2], [3, 4], [5, 6]])
# An example of integer array indexing.# The returned array will have shape (3,) andprint(a[[0, 1, 2], [0, 1, 0]]) # Prints "[1 4 5]"
# The above example of integer array indexing is equivalent to this:print(np.array([a[0, 0], a[1, 1], a[2, 0]])) # Prints "[1 4 5]"
# When using integer array indexing, you can reuse the same# element from the source array:print(a[[0, 0], [1, 1]]) # Prints "[2 2]"
# Equivalent to the previous integer array indexing exampleprint(np.array([a[0, 1], a[0, 1]])) # Prints "[2 2]"In contrast to slicing, integer array indexing always returns a copy of the data.
Boolean array indexing
Section titled “Boolean array indexing”import numpy as np
a = np.array([[1,2], [3, 4], [5, 6]])
bool_idx = (a > 2) # Find the elements of a that are bigger than 2; # this returns a numpy array of Booleans of the same # shape as a, where each slot of bool_idx tells # whether that element of a is > 2.
print(bool_idx) # Prints "[[False False] # [ True True] # [ True True]]"
# We use boolean array indexing to construct a rank 1 array# consisting of the elements of a corresponding to the True values# of bool_idxprint(a[bool_idx]) # Prints "[3 4 5 6]"
# We can do all of the above in a single concise statement:print(a[a > 2]) # Prints "[3 4 5 6]"Frequently this type of indexing is used to select the elements of an array that satisfy some condition