NumPy Basics : Part 1
Tags: python, numpy, beginners
Published: 2022-02-21 05:08:34


This post aims to cover the basics of Numpy. Let's do this.
## Table of Contents
 

1.  [Introduction](#chapter-1)
2.  [Creating Numpy Arrays](#chapter-2)
3.  [Attributes](#chapter-3)
4.  [Indexing](#chapter-4)

### Introduction <a name="chapter-1"></a>

NumPy refers to Numerical Python which is a Python library used in array manipulation. 

To use the NumPy library import it as:

 `import numpy as np`

np is the conventional alias for NumPy.

The main object of Numpy is the _**ndarray**_ (N-dimensional array) object which is more efficient and faster that Python lists.

The ndarray is a multidimensional array of homogeneous data; all elements in the array have the same data type.

### Creating a Numpy array <a name="chapter-2"></a>

Use the **_ndarray class_** to create ndarray objects and access their attributes and methods.

Using the numpy.array() function
```python
import numpy as np
a = np.array([1, 2, 3])
```

You can also create an array with zeros only or ones only.

```python
#array filled with zeros; creates array with 5 zeros 
array_zeros = np.zeros(5)

#array filled with ones; creates array with 4 ones
array_ones = np.ones(4)
```

You can also create an empty array which can be filled later.

```python
# Create an empty array with 3 elements
arrEmpty = np.empty(3)
```
You can also create an array using numpy.arange()

```python
# output is a range from 0 to the specified number but not #including that number.([0, 1, 2, 3,4])

array_range = np.arange(5)
# output > array([0, 1, 2, 3,4])
```
You can also specify the first number, last number, and the step size in the range.

```python
np.arange(1, 9, 2)
# output > array([1, 3, 5, 7]
```
### Attributes <a name="chapter-3"></a>

Let's use this example to understand ndarray attributes.

```python
array_A = np.array([[2,4,6], [1,3,5]])

```

**_1. ndarray.ndim:_** The number of dimensions (axes) of the array.
The ndim for array_A is 2.

**_2. ndarray.dtype:_** The data type of the elements in the array. The dtype in our example is int64. 
You can specify the dtype when creating an array using the dtype keyword.

```
# array of ones.
a = np.ones(3, dtype=np.int64)
```
 
**_3.  ndarray.shape:_** The number of elements along with each axis. 
The shape is a tuple of N-positive integers that specifies the number of elements of each dimension.
For our example the shape is (2,3) because the array has two rows and three columns.
Ps: The length of the shape tuple is the number of dimensions, ndim.

**_4.  ndarray.size:_** The total number of elements in the array. 
It is equal to the product of the elements of shape. 
The size of our example array is 6. i.e 2 x 3
 
### Indexing <a name="chapter-4"></a>
Indexing in Numpy works similarly to indexing in python lists.

For a one dimensional array, values can be accessed by specifying the desired index in square brackets counting from 0.
`syntax: array_x[start:stop:step]
`

```python
import numpy as np
array_x = np.array([5,6,7,8,9])
array_x
```
Output:
`array([5, 6, 7, 8, 9])
`
Item at index 0
```python
array_x[0]
```
Output: `5`

Items from index 0 to 3 but not including 3.

```python
array_x[:3]
```
Output: `array([5, 6, 7])`

Items from index 3 to the last element.

```python
array_x[3:]
```
Output: `array([8, 9])`

Items in the array taking a step size of 2

```python
array_x[0:-1:2]
```
Output: `array([5, 7])`

In a multi-dimensional array, values can be accessed using a comma-separated tuple of indices. 
The first value specifies the row while the second specifies the column.

```python
import numpy as np
array_A = np.array([[2,4,6], [1,3,5]])
array_A[0,0]
```
`2`
```python
array_A[1, 1]
```
Output: `3`

You can also use indexing to change the value at a given index.

```python
array_A[1, 1]=7
array_A
```
Output:

```
[[2, 4, 6],
 [1, 7, 5]])
```
Advantages of using Numpy Arrays.

1. Numpy data structures take up less memory.
2. Numpy arrays are faster than lists.
3. NumPy arrays have homogeneous data types and allow for mathematical manipulation.