The convention is to import it as follows:

**import numpy as np**

To create an array of numbers between 0 and 9, you could use the following command:

**x = range(9)**

To convert that list into a NumPy array, you can write:

**x = np.array(range(9))**

And to make you life easier, there is a shorthand for the above command:

**x = np.arange(9)**

So far, we have been creating one dimensional array. However, there are ways to reshape the arrays. The reshape() method when applied on an array, it returns a reshaped version of it without changing the original object. To reshape the original object itself, then use resize() instead.

**y = x.reshape(2,5)**

The above command create a 2-dimensional array of 2 rows and 5 columns. You can create a much dimensional arrays as you want. See the command below for a 3*4*5 array.

**y = np.arange(3*4*5).reshape(3,4,5)**

The mathematical operations '+', '-', '/' and '*' are applied elementwise.

**x = np.arange(10)**

**# To multiply each element of x by 10**

**y = x + 10**

**# To multiply each element of x by itself**

**y = x + x**

To do a Matrix Multiplication though:

**# Create a 3 * 5 Matrix**

**A = np.arange(15).reshape(3,5)**

**# Create a 5 * 2 Matrix**

**B = np.arange(10).reshape(5,2)**

**# Dot product gives you a 3 * 2 Matrix**

**y = y = np.dot(A, B)**

Just like lists, you can get parts of arrays

For original lists:

**A = range(10)**

**A[2:5] # [2, 3, 4]**

For NumPy Arrays

**B = arange(10)**

**B[2:5] # array([2, 3, 4])**

However, you can set some elements of the array as follows

**B[2:5] = 1337**

But, you cannot do the same to lists.

**A[2:5] = 1337 # TypeError: can only assign an iterable**

For statisticians, there are also the following functions

**x = np.arange(5) + 1**

**x.mean() # 3.0**

**x.max() # 5**

**x.min() # 1**

**x.std() # 1.414**

You can also access elements of the array using start, stop and a step:

**x = np.arange(10)**

**x[2:7:2] # array([2, 4, 6])**

Or access specific elements, let's say elements 1, 5 and 6

**x[[1,5,6]] # array([1, 5, 6])**

Similar to reshape() and resize(), ravel() converts a multidimensional array into a one-dimensional array, while transpose() turns rows into columns and vice versa.

If you program in R, you will not miss their way of accessing elements of array that meet a certain condition.

**x = np.arange(10)**

**x[x>4] # array([5, 6, 7, 8, 9])**

**x[x%2 == 1] # array([1, 3, 5, 7, 9])**

If you are having an array of elements that are either True or False.

**x = np.array([True, False, True, True])**

**x.all() # Only True if all elements are True**

**x.any() # Only True if any elements are True**

Finally, there is a repeat() that repeats each element of the array n times

**x = np.array([1, 2])**

**x.repeat(3) # array([1, 1, 1, 2, 2, 2])**

That's all folks for today.

Check the following tutorial for more information.