Lọc mảng NumPy
- Trang trước Sắp xếp mảng NumPy
- Trang tiếp theo Ngẫu nhiên NumPy
Lọc mảng
Lấy một số phần tử từ mảng hiện có và tạo ra một mảng mới từ chúng gọi là lọc (filtering).
Trong NumPy, chúng ta sử dụng danh sách chỉ số boolean để lọc mảng.
Danh sách chỉ số boolean là danh sách các giá trị boolean tương ứng với các chỉ số trong mảng.
nếu giá trị tại chỉ số là True
nếu phần tử đó sẽ được bao gồm trong mảng đã lọc; nếu giá trị tại chỉ số là False
nếu phần tử đó sẽ bị loại bỏ khỏi mảng đã lọc.
Mô hình
Tạo ra một mảng từ các phần tử tại các chỉ số 0 và 2, 4:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) x = [True, False, True, False, True] newarr = arr[x] print(newarr)
Ví dụ trên sẽ trả về [61, 63, 65]
Tại sao?
Bởi vì bộ lọc mới chỉ chứa các phần tử trong mảng bộ lọc có giá trị True
giá trị, vì vậy trong trường hợp này, chỉ số là 0 và 2, 4.
mảng bộ lọc
Trong ví dụ trên, chúng ta đã tạo ra True
và False
Giá trị được mã hóa cứng, nhưng mục đích thông thường là tạo ra một mảng bộ lọc dựa trên điều kiện.
Mô hình
Tạo một mảng lọc chỉ trả về các giá trị lớn hơn 62:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # Tạo một danh sách rỗng filter_arr = [] # Duyệt qua từng phần tử trong arr for element in arr: # Nếu phần tử lớn hơn 62, thì đặt giá trị là True, ngược lại là False: if element > 62: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Mô hình
Tạo một mảng lọc, chỉ trả về các phần tử chẵn trong mảng nguyên bản:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) # Tạo một danh sách rỗng filter_arr = [] # Duyệt qua từng phần tử trong arr for element in arr: # Nếu phần tử có thể chia hết cho 2, đặt giá trị là True, nếu không đặt là False if element % 2 == 0: filter_arr.append(True) else: filter_arr.append(False) newarr = arr[filter_arr] print(filter_arr) print(newarr)
Tạo trực tiếp mảng lọc
Ví dụ trên là một nhiệm vụ rất phổ biến trong NumPy, NumPy cung cấp các phương pháp tốt để giải quyết vấn đề này.
Chúng ta có thể thay thế trực tiếp mảng trong điều kiện thay vì biến iterable, nó sẽ hoạt động như mong đợi.
Mô hình
Tạo một mảng lọc chỉ trả về các giá trị lớn hơn 62:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) filter_arr = arr > 62 newarr = arr[filter_arr] print(filter_arr) print(newarr)
Mô hình
Tạo một mảng lọc, chỉ trả về các phần tử chẵn trong mảng nguyên bản:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7]) filter_arr = arr % 2 == 0 newarr = arr[filter_arr] print(filter_arr) print(newarr)
- Trang trước Sắp xếp mảng NumPy
- Trang tiếp theo Ngẫu nhiên NumPy