Mảng tìm kiếm NumPy
Tìm kiếm mảng
Bạn có thể tìm kiếm một giá trị nhất định trong mảng và trả về các chỉ mục phù hợp.
Để tìm kiếm một mảng, hãy sử dụng phương thức where()
.
Ví dụ
Tìm các chỉ mục có giá trị là 4:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x =
np.where(arr == 4)
print(x)
Hãy tự mình thử » Ví dụ trên sẽ trả về một bộ dữ liệu: (array([3, 5, 6],)
Điều đó có nghĩa là giá trị 4 hiện diện ở chỉ số 3, 5 và 6.
Ví dụ
Tìm các chỉ mục có giá trị chẵn:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 0)
print(x)
Hãy tự mình thử »Ví dụ
Tìm các chỉ mục có giá trị lẻ:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x =
np.where(arr%2 == 1)
print(x)
Hãy tự mình thử » Tìm kiếm đã được sắp xếp
Có một phương thức gọi là searchsorted()
thực hiện tìm kiếm nhị phân trong mảng và trả về chỉ mục nơi giá trị được chỉ định sẽ được chèn vào để duy trì thứ tự tìm kiếm.
Phương thức searchsorted()
được cho là được sử dụng trên các mảng đã được sắp xếp.
Ví dụ
Tìm các chỉ mục cần chèn giá trị 7:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7)
print(x)
Hãy tự mình thử »Ví dụ giải thích: Số 7 nên được chèn vào chỉ mục 1 để giữ nguyên thứ tự sắp xếp.
Phương thức bắt đầu tìm kiếm từ bên trái và trả về chỉ mục đầu tiên trong đó số 7 không còn lớn hơn giá trị tiếp theo.
Tìm kiếm từ phía bên phải
Theo mặc định, chỉ mục bên trái nhất được trả về, nhưng thay vào đó, chúng ta có thể cung cấp side='right'
để trả về chỉ mục bên phải nhất.
Ví dụ
Tìm các chỉ mục cần chèn giá trị 7, bắt đầu từ bên phải:
import numpy as np
arr = np.array([6,
7, 8, 9])
x =
np.searchsorted(arr, 7, side='right')
print(x)
Hãy tự mình thử »Ví dụ giải thích: Số 7 nên được chèn vào chỉ mục 2 để giữ nguyên thứ tự sắp xếp.
Phương thức bắt đầu tìm kiếm từ bên phải và trả về chỉ mục đầu tiên trong đó số 7 không còn nhỏ hơn giá trị tiếp theo.
Nhiều giá trị
Để tìm kiếm nhiều giá trị, hãy sử dụng một mảng có các giá trị được chỉ định.
Ví dụ
Tìm các chỉ mục trong đó các giá trị 2, 4 và 6 sẽ được chèn vào:
import numpy as np
arr = np.array([1,
3, 5, 7])
x =
np.searchsorted(arr, [2, 4, 6])
print(x)
Hãy tự mình thử » Giá trị trả về là một mảng: [1 2 3]
chứa ba chỉ mục trong đó 2, 4, 6 sẽ được chèn vào mảng ban đầu để duy trì thứ tự.