Sắp xếp (Sort) là một thao tác phổ biến trong phân tích dữ liệu và lập trình. Nó liên quan đến việc sắp xếp các phần tử trong một tập hợp theo một thứ tự nhất định. NumPy – thư viện cốt lõi cho tính toán khoa học trong Python, cung cấp nhiều hàm để sắp xếp mảng một cách hiệu quả.
Trong bài viết ngày hôm nay, UniTrain sẽ hướng dẫn bạn nhiều cách tiếp cận để sắp xếp mảng trong NumPy, bao gồm cả kỹ thuật cơ bản và nâng cao.
NumPy.Sort()
Để Sort các phần tử của mảng NumPy theo thứ tự nhất định, bạn có thể sử dụng hàm numpy.sort(). Bằng cách sử dụng hàm này, bạn có thể sắp xếp một mảng N chiều với bất kỳ kiểu dữ liệu nào.
Cú pháp hàm Sort:
numpy.sort(arr, axis= -1, kind=None, order=None)
Hàm này cho phép sử dụng bốn tham số sau:
- arr: Đây là mảng đầu vào mà bạn muốn sắp xếp.
- axis: Tham số này xác định trục mà việc sắp xếp sẽ được thực hiện. Nếu giá trị là None, mảng sẽ được làm phẳng (flatten) trước khi sắp xếp. Mặc định, tham số này là -1, tức là sắp xếp theo trục cuối cùng.
- order: Tham số này chỉ định các trường sẽ được so sánh trước. Nếu mảng có cấu trúc (nghĩa là có các trường được định nghĩa), thì đối số này xác định trường nào được sử dụng để sắp xếp.
- kind: Thuật toán sắp xếp. Mặc định là ‘quicksort’. Các lựa chọn khác bao gồm ‘mergesort’ và ‘heapsort’.
Ví dụ:
array = np.array([12, 3, 7, 5, 9])
sorted_array = np.sort(array)# Sorts in ascending order
print(sorted_array)#Output:
[3 5 7 9 12]
Nếu mảng cần được sắp xếp theo thứ tự giảm dần, bạn có thể đảo ngược kết quả như sau:
array = np.array([3, 9, 4, 1, 5])
sorted_array = np.sort(array)[::-1]# Sorts in ascending order and reverses for descending
print(sorted_array)#Output:
[9 5 4 3 1]
Sắp xếp mảng bằng Numpy.argsort()
Hàm numpy.argsort() trả về chỉ số của các phần tử trong mảng theo thứ tự sẽ sắp xếp được mảng theo thứ tự tăng dần. Điều này cho phép chúng ta tái sắp xếp dữ liệu dựa trên các chỉ số đó mà không làm thay đổi mảng gốc.
import numpy as np
array = np.array([5, 2, 9, 1, 5])
sorted_indices = np.argsort(array)
print(sorted_indices)
#Output:
[3 1 0 4 2]
Sắp xếp mảng bằng Numpy.lexsort()
Khi sắp xếp mảng có cấu trúc (structured array) theo nhiều tiêu chí, chúng ta có thể sử dụng hàm numpy.lexsort(). Một mảng có cấu trúc giống như một bảng, trong đó mỗi cột có thể chứa các kiểu dữ liệu khác nhau. Với numpy.lexsort(), chúng ta có thể Sort mảng dựa trên nhiều cột, bắt đầu từ cột đầu tiên và sử dụng các cột tiếp theo để quyết định thứ tự đối với những phần tử có giá trị giống nhau.
a = [1, 5, 1, 4, 3, 4, 4] # Cột thứ nhất (key phụ)
b = [9, 4, 0, 4, 0, 2, 1] # Cột thứ hai (key chính)
ind = np.lexsort((b, a))
# Sắp xếp theo ‘a’ trước, nếu trùng thì so sánh theo ‘b’
print(ind)
#Out put:
array([2, 0, 4, 6, 5, 3, 1])
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu các tính năng mạnh mẽ của NumPy về Sort và các phép toán đơn nhất (unary operations), qua đó làm nổi bật tầm quan trọng của thư viện này trong việc xử lý dữ liệu hiệu quả.
NumPy là một thư viện thiết yếu cho tính toán số trong Python, cung cấp các công cụ mạnh mẽ để Sort mảng và thực hiện các phép tính theo từng phần tử một cách nhanh chóng. Hiệu suất vượt trội của NumPy so với các hàm dựng sẵn của Python khiến nó trở thành lựa chọn hàng đầu khi làm việc với các tập dữ liệu lớn, giúp các tác vụ phân tích dữ liệu trở nên trơn tru và hiệu quả hơn.
Cùng theo dõi Fanpage UniTrain để khám phá thêm nhiều thông tin hữu ích nhé.
Xem thêm:
Xử lý và trực quan hóa dữ liệu với Python