Bird
Raised Fist0
NumPydata~10 mins

Sorting along axes in NumPy - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Sorting along axes
Start with 2D array
↓
Choose axis to sort
↓
Sort elements along axis
↓
Return sorted array
↓
End
We start with a 2D array, pick an axis (0 for columns, 1 for rows), sort elements along that axis, and get a sorted array.
Execution Sample
NumPy
import numpy as np
arr = np.array([[3,1,2],[6,4,5]])
sorted_axis0 = np.sort(arr, axis=0)
sorted_axis1 = np.sort(arr, axis=1)
This code sorts a 2D array first by columns (axis=0) and then by rows (axis=1).
Execution Table
StepArray StateAxisActionResult
1[[3,1,2],[6,4,5]]0Sort each columnColumn 1: [3,6] -> [3,6] Column 2: [1,4] -> [1,4] Column 3: [2,5] -> [2,5] Result: [[3,1,2],[6,4,5]]
2[[3,1,2],[6,4,5]]0Sort columns ascending[[3,1,2],[6,4,5]]
3[[3,1,2],[6,4,5]]1Sort each rowRow 1: [3,1,2] -> [1,2,3] Row 2: [6,4,5] -> [4,5,6] Result: [[1,2,3],[4,5,6]]
4[[3,1,2],[6,4,5]]1Sort rows ascending[[1,2,3],[4,5,6]]
5--EndSorting complete
💡 All rows and columns sorted along specified axes, process ends.
Variable Tracker
VariableStartAfter axis=0 sortAfter axis=1 sortFinal
arr[[3,1,2],[6,4,5]][[3,1,2],[6,4,5]][[3,1,2],[6,4,5]][[3,1,2],[6,4,5]]
sorted_axis0-[[3,1,2],[6,4,5]]-[[3,1,2],[6,4,5]]
sorted_axis1--[[1,2,3],[4,5,6]][[1,2,3],[4,5,6]]
Key Moments - 3 Insights
Why does sorting along axis=0 sort columns, not rows?
Sorting along axis=0 means sorting down each column because axis=0 refers to the vertical direction. See execution_table rows 1 and 2 where columns are sorted.
Why does sorting along axis=1 sort rows individually?
Axis=1 means sorting along the horizontal direction, so each row is sorted separately. See execution_table row 3 where each row is sorted.
Does the original array change after sorting?
No, np.sort returns a new sorted array and does not modify the original. See variable_tracker where 'arr' stays the same.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what is the sorted first row?
A[1, 2, 3]
B[3, 1, 2]
C[6, 4, 5]
D[4, 5, 6]
💡 Hint
Check execution_table row 3 under 'Result' for sorted rows.
At which step does sorting along axis=1 complete?
AStep 2
BStep 4
CStep 3
DStep 5
💡 Hint
Look at execution_table rows 3 and 4 for axis=1 sorting progress.
If we change axis=0 to axis=1 in np.sort, what changes in variable_tracker?
ABoth sorted_axis0 and sorted_axis1 remain unchanged
Bsorted_axis1 will have sorted columns instead of rows
Csorted_axis0 will have sorted rows instead of columns
DOriginal array 'arr' will be modified
💡 Hint
Refer to variable_tracker and concept_flow about axis meaning.
Concept Snapshot
np.sort(array, axis)
- axis=0 sorts each column (downwards)
- axis=1 sorts each row (across)
- Returns a new sorted array
- Original array stays unchanged
- Useful for sorting multi-dimensional data
Full Transcript
We start with a 2D numpy array. Sorting along axis=0 means sorting each column independently, vertically. Sorting along axis=1 means sorting each row independently, horizontally. The np.sort function returns a new sorted array without changing the original. We saw step-by-step how the array changes after sorting along each axis. This helps organize data by rows or columns as needed.

Practice

(1/5)
1. What does the axis parameter control in numpy.sort?
easy
A. It decides whether to sort rows or columns in an array.
B. It sets the sorting algorithm type.
C. It changes the data type of the array before sorting.
D. It specifies the order of sorting (ascending or descending).

Solution

  1. Step 1: Understand the role of axis in sorting

    The axis parameter tells numpy which direction to sort: 0 means sort each column, 1 means sort each row.
  2. Step 2: Differentiate from other parameters

    Sorting algorithm type and order are controlled by other parameters, not axis.
  3. Final Answer:

    It decides whether to sort rows or columns in an array. -> Option A
  4. Quick Check:

    axis controls direction = A [OK]
Hint: Remember axis=0 sorts columns, axis=1 sorts rows [OK]
Common Mistakes:
  • Confusing axis with sorting order
  • Thinking axis changes data type
  • Assuming axis sets sorting algorithm
2. Which of the following is the correct syntax to sort a 2D numpy array arr along rows?
easy
A. numpy.sort(arr, axis=0)
B. numpy.sort(arr, axis=None)
C. numpy.sort(arr, axis=1)
D. numpy.sort(arr, axis=2)

Solution

  1. Step 1: Identify axis for sorting rows

    In a 2D array, axis=1 means sorting each row individually.
  2. Step 2: Check other options for validity

    Axis=0 sorts columns, axis=None flattens the array into 1D before sorting, axis=2 is invalid for 2D arrays.
  3. Final Answer:

    numpy.sort(arr, axis=1) -> Option C
  4. Quick Check:

    axis=1 sorts rows = B [OK]
Hint: Use axis=1 to sort rows in 2D arrays [OK]
Common Mistakes:
  • Using axis=0 to sort rows
  • Using invalid axis like 2 for 2D arrays
  • Using axis=None which flattens the array
3. What is the output of the following code?
import numpy as np
arr = np.array([[3, 1, 2], [6, 4, 5]])
sorted_arr = np.sort(arr, axis=0)
print(sorted_arr)
medium
A. [[1 2 3] [4 5 6]]
B. [[3 1 2] [6 4 5]] sorted by columns
C. [[3 1 2] [6 4 5]] (unchanged)
D. [[3 1 2] [6 4 5]]

Solution

  1. Step 1: Understand sorting along axis=0

    Sorting with axis=0 sorts each column independently in ascending order.
  2. Step 2: Sort each column of the array

    Columns: [3,6] -> [3,6], [1,4] -> [1,4], [2,5] -> [2,5]. Since columns are already sorted, array remains the same.
  3. Final Answer:

    [[3 1 2] [6 4 5]] sorted by columns -> Option B
  4. Quick Check:

    axis=0 sorts columns = A [OK]
Hint: axis=0 sorts columns top to bottom [OK]
Common Mistakes:
  • Assuming sorting rearranges rows
  • Confusing axis=0 with axis=1
  • Expecting full array sort instead of column-wise
4. The code below throws an error. What is the problem?
import numpy as np
arr = np.array([[1, 3], [2, 4]])
sorted_arr = np.sort(arr, axis=2)
print(sorted_arr)
medium
A. Axis 2 does not exist for a 2D array.
B. The array contains non-numeric data.
C. The sort function requires axis to be None.
D. The array must be 1D to sort.

Solution

  1. Step 1: Check array dimensions

    The array is 2D with shape (2,2), so valid axes are 0 and 1 only.
  2. Step 2: Validate axis parameter

    Using axis=2 is invalid and causes an IndexError because axis 2 does not exist.
  3. Final Answer:

    Axis 2 does not exist for a 2D array. -> Option A
  4. Quick Check:

    Axis must be within array dimensions = C [OK]
Hint: Axis must be less than array dimensions [OK]
Common Mistakes:
  • Using axis out of range
  • Assuming sort only works on 1D arrays
  • Confusing axis with array shape
5. Given a 3D numpy array arr with shape (2, 2, 3), how would you sort the array along the last axis for each 2D slice?
hard
A. np.sort(arr, axis=-2)
B. np.sort(arr, axis=1)
C. np.sort(arr, axis=0)
D. np.sort(arr, axis=2)

Solution

  1. Step 1: Identify the last axis in a 3D array

    For shape (2, 2, 3), axes are 0, 1, 2. The last axis is 2.
  2. Step 2: Use axis=2 to sort along the last axis

    Sorting with axis=2 sorts each 2D slice along the last dimension (length 3).
  3. Final Answer:

    np.sort(arr, axis=2) -> Option D
  4. Quick Check:

    Last axis is 2, so axis=2 sorts last dimension [OK]
Hint: Use axis=-1 or axis=2 for last axis in 3D arrays [OK]
Common Mistakes:
  • Using axis=0 or 1 instead of last axis
  • Confusing negative axis indexing
  • Not matching axis to array shape