Data science in Python is mostly analytical, so learning it from scratch is a basic thing to start with. The beginner-friendly steps shown here are a kick-start for learning how to program from the basic codes.

One of the main benefits is its extensive set of libraries, a collection of routines and functions that help data scientists perform complex tasks quite effortlessly without writing a single line of code. One such important function is numerical Python aka NumPy which is a fundamental library, well known for high-performance multi-dimensional array and can be used for different mathematical functions like linear algebra, Fourier Transformations, etc. as well as logical operations.

This article takes a lowdown on understanding NumPy and its functions, including steps to create NumPy arrays, indexing, slicing, etc.

### Understanding NumPy And How It Works

The easy way to install Python in your system is to download and install a package called Anaconda that contains pre-installed libraries.

Once Anaconda is installed, now you can easily install NumPy on your terminal:

conda install nump

Voila! NumPy is installed. Let’s start by launching Jupyter notebook.

Import NumPy on your Jupyter notebook:

Import numpy as np

Creating a one-dimensional array:

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

Creating higher dimensional array:

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

Shape of array2:

print ( array2.shape ) # *Prints* ( 2, 3 )

Changing an element in an array:

array1 [ 0 ] = 9

print ( array1 ) # *Prints* “ [ 9, 2, 3, 4, 5, 6 ] ”

Using arange( ) built-in function, let’s create NumPy array:

array1 = np.arange ( 0, 10 ) # This generates index value from 0 to 1

We can create Identity Matrix with the given code:

my_matrx = np . eye( 44 ) # here 4 is the number of columns/rows

### Generating Random Numbers

An array of random numbers can be generated by using the functions rand(), randn() or randint().

For instance, if we need a one-dimensional array containing 6 objects which are uniformly distributed from 0 to 1, then:

my_rand = np.random.rand (6)

### Arithmetic Operations On NumPy: (operating as each element to itself)

array1 = np.arange (1, 12)

array1 * array1

array1 – array1

array1 + array1

array1 / array1

### Using Universal Functions In Each Element:

np.sqrt (array1) # Returns square root

np.exp (array1) # Returns the exponential

np.log (array1) # Returns logarithm

np.std (array1) # Returns standard deviation

The array can be indexed and sliced, noted that a slice must be specified for each dimension of the array:

### Indexing:

array1 [ 2 ] # *Prints* 3

array2 [ 1, 1 ] # *Prints* 5

array2 [ 0, : ] # array ( [ 1, 2, 3 ] ); row 1

### Slicing:

array1 ( [ 1 : 3 ] ) # *Prints *array ( [ 2, 3] )

array1 ( [ 1 : 3 ] ) = [ -2, -3 ] # *Prints* array ( [ 1, -2, -3, 4, 5, 6 ] )

array1 [ : : ] # array ( [ 1, -2, -3, 4, 5, 6 ] ); lower, upper, step all take the default values

array1 [ : 3 ] # array ( [ 1, -2, -3 ] ); first three elements

array [ : : 2 ] # array ( [ 1, -3, 5 ] ); here the step is 2

We can compute the functions in reverse order using negative numbers:

array1 [ -3 : ] # *Prints *array ( [4, 5, 6 ] ); the last three numbers

### Importing And Exporting Of Files:

np.loadtxt (file.txt) # imports from a text file

np.savetxt (‘file.txt’,arr,delimiter= ’ ’) #writes to a text file

It is always helpful and good to have something extra in the bag. So besides using NumPy, here are some other libraries for Python that you can check out and keep yourself updated.