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

## Table of Contents

### Introduction

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

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

Using the numpy.array() function

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

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

```
#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.

```
# Create an empty array with 3 elements
arrEmpty = np.empty(3)
```

You can also create an array using numpy.arange()

```
# 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.

```
np.arange(1, 9, 2)
# output > array([1, 3, 5, 7]
```

### Attributes

Let's use this example to understand ndarray attributes.

```
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

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]`

```
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

```
array_x[0]
```

Output: `5`

Items from index 0 to 3 but not including 3.

```
array_x[:3]
```

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

Items from index 3 to the last element.

```
array_x[3:]
```

Output: `array([8, 9])`

Items in the array taking a step size of 2

```
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.

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

`2`

```
array_A[1, 1]
```

Output: `3`

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

```
array_A[1, 1]=7
array_A
```

Output:

```
[[2, 4, 6],
[1, 7, 5]])
```

Advantages of using Numpy Arrays.

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

## Top comments (0)