Mảng tìm kiếm NumPy


Tìm kiếm Mảng

Bạn có thể tìm kiếm một mảng cho một giá trị nhất định và trả về các chỉ mục nhận được một kết quả phù hợp.

Để tìm kiếm một mảng, hãy sử dụng where()phương pháp này.

Thí 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)

Ví dụ trên sẽ trả về một tuple: (array([3, 5, 6],)

Có nghĩa là giá trị 4 có ở chỉ số 3, 5 và 6.

Thí dụ

Tìm các chỉ mục trong đó các giá trị là 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)

Thí dụ

Tìm các chỉ mục có giá trị là số lẻ:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

x = np.where(arr%2 == 1)

print(x)


Tìm kiếm đã sắp xếp

Có một phương thức đượ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 searchsorted()thức này được giả định là được sử dụng trên các mảng đã sắp xếp.

Thí dụ

Tìm các chỉ mục nơi giá trị 7 sẽ được chèn:

import numpy as np

arr = np.array([6, 7, 8, 9])

x = np.searchsorted(arr, 7)

print(x)

Ví dụ được 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 này bắt đầu tìm kiếm từ bên trái và trả về chỉ mục đầu tiên mà 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ể side='right'trả về chỉ mục bên phải nhất.

Thí dụ

Tìm các chỉ mục nơi giá trị 7 sẽ được chèn vào, 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)

Ví dụ được 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 này 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 hơn một giá trị, hãy sử dụng một mảng với các giá trị được chỉ định.

Thí dụ

Tìm các chỉ mục nơi các giá trị 2, 4 và 6 sẽ được chèn:

import numpy as np

arr = np.array([1, 3, 5, 7])

x = np.searchsorted(arr, [2, 4, 6])

print(x)

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ự.


Kiểm tra bản thân với các bài tập

Bài tập:

Sử dụng đúng phương pháp NumPy để tìm tất cả các mục có giá trị 4.

arr = np.array([1, 2, 3, 4, 5, 4, 4])

x = np.(arr == 4)