# partition() – Partial Sort in NumPy

Hi Enthusiastic Learners! In this article we will be studying about “*partition() – partial sort in NumPy*“. Have you ever wondered, if you are given an array and you only want `n`

smallest numbers from your array instead of completely sorting it? Well, that is exactly the case where we should use `partition() - partial sort`

& and we are calling partition() a partial sort because we actually will be sorting only few parts of given array or you can say getting a partition of `n`

smallest values. Before jumping on to partition() – partial sort in NumPy, please check out other articles related to sorting in NumPy:

### Watch video tutorial here:

## partition() – Partial Sort Syntax

`np.partition(arr, pos, axis=-1, kind='introselect', order=None)`

Where,

**arr**is the array which has to be sorted**pos**position in array.**axis**defines the axis along which you need to do sorting & -1 value means last axis.**kind**gives you liberty to choose sorting algorithm. Default algo ‘introselect’**order**— if arr is a structured array, this argument specifies which fields to compare first, second, etc.

Let’s begin with creating a array `arr`

.

```
import numpy as np
arr = np.array([3, 7, 4, 2, 8, 9, 0, 18, 1])
print("-- Base Array --")
print(arr)
```

Sorting array for `pos = 3`

. Now, partition() will create a copy of original array and will arrange number in such a way such that till `pos`

all values will be the smallest values in array & after that position other values will be as it is.

**Note** that they may not be ordered. Its just that, till `pos = 3`

, that is `4`

elements as indexing in arrays starts from `0`

, we will be getting 4 smallest values & remaining values will be shifted as it is towards right and there is no order in sorted values.

Syntax for it will be — `np.partition(arr, 2)`

```
sort_for_3 = np.partition(arr, 3)
print("-- Sorted Array till 3rd Position --")
print(sort_for_3)
```

As, we can clearly from above example, that 1st four elements (till pos = 3) are smallest among complete array & other values are just shifted towards right in the same order they naturally were. Also, there is no order in sorted values.

#### partition() on 2-dimensional array

We can do partial sort for 2-D arrays as well & we can choose axis along which we want values to be sorted.

Let’s begin with creating a 2-D array

```
arr_2d = np.random.randint(0, 10, (4, 6))
print("-- 2D Array --\n")
print(arr_2d)
```

Get 2 smallest values for each row of array.

Syntax for it will be — `np.partition(arr_2d, 1, axis=1)`

```
sorted_2d = np.partition(arr_2d, 1, axis=1)
print("-- Partially Sorted 2D Array -- \n")
print(sorted_2d)
```

From above example it clear, that for each row we are getting smallest value till index (pos) value = 1, that is 2 smallest elements in each row.

Stay tuned & keep learning! In our next post we will be covering more sorting techniques that can be achieved in NumPy.