The Basics of Numpy Arrays

Data manipulation in Python is nearly synonymous with Numpy array manipulation, even newer tools like Pandas are built around the Numpy array. This section will present several examples using Numpy and manipulation to access data and subarrays, and to split, reshape and join arrays.
Let’s start by defining three random arrays: a one-dimensional, two-dimensional, and three dimensional array. We’ll use Numpy’s random number generator, which we will seed with a set value in order to ensure that the same random arrays are generated each time this code is run.
In order to go through the Introduction of Numpy follow the below link:
import numpy as npnp.random.seed(0) # seed for reproducibilityx1 = np.random.randint(10, size=(3,4,5))
Each array has attributes ndim(the number of dimensions), shape(the size of each dimension), size(the total size of array), dtype(the datatype of array), itemsize(the size of each array element), and nbytes(the total size of array).
print("x1 ndim: ", x1.ndim) #printing number of dimensions of array
print("x1 shape: ", x1.shape) #printing the size of each dimension
print("x1 size: ", x1.size) #printing total size of array
print("dtype: ", x1.dtype) # printing the data type of array
print("itemsize: ", x1.itemsize) #printing size of each array element
print("nbytes: ", x1.nbytes) #printing the total size of array
Array Indexing: Accessing single elements
If you are familiar with the indexing in Python lists, the same is the case with one-dimensional array indexing of Numpy array.
x2=np.array([5, 0, 3, 3, 7, 9])
x2[0] # print first element
x2[-1] #print last element
In case of multidimensional arrays, you can access items using a comma-separated tuple of indices:
x3=np.array([[3, 5, 2, 4],
[7, 6, 8, 8],
[1, 6, 7, 7]])x3[0,0] #print first element
x3[2, -1] #print last element of 2nd row
Modifying values of array:
x3[0, 0] = 12
Array Slicing: Accessing Subarrays
One dimensional Subarrays
The Numpy slicing syntax follows that of the standard Python list; to access a slice of an array x, use this:
x[start:stop:step]
x = np.arange(10)
x[:5] # first 5 elements
x[5:] #elements after index 5
x[::2] #every alternate element
x[::-1] # reversed array
Multidimensional subarrays
Multidimensional slices work in the same way, with multiple slices separated by commas.
x3=np.array([[3, 5, 2, 4],
[7, 6, 8, 8],
[1, 6, 7, 7]])x3[:2, :3] #two rows, three columns
x3[:3, ::2] #all rows, every alternate column
x3[::-1, ::-1] # subarray dimensions reversed together
x3[:, 0] #first column of x3
x3[0, :] # first row of x2
Reshaping of Arrays:
The most flexible way of reshaping is to use reshape() method.
grid = np.arange(1, 10).reshape((3, 3))
Array Concatenation
Concatenation, or joining of two arrays in Numpy, is primarily accomplished through the routines np.concatenate, np.vstack and np.hstack.
x=np.array([1, 2, 3])
y=np.array([3, 2, 1])
np.concatenate([x,y])
Vertically stack the arrays
x=np.array([1, 2, 3])
grid=np.array([[9, 8, 7],
[6, 5, 4]])# vertically stack the arrays
np.vstack([x, grid])
Horizontally stack the arrays
grid=np.array([[9, 8, 7],
[6, 5, 4]])
y=np.array([[99],
[99]])np.hstack([grid, y])
Splitting of Arrays:
The opposite of concatenation is splitting, which is implemented by the functions np.split
x=[1, 2, 3, 99, 99, 3, 2, 1]
x1, x2, x3 = np.split(x, [3, 5])
print(x1, x2, x3)
In order to access the entire code, follow the below link: