NumPy 數組搜索

搜索數組

您可以在數組中搜索(檢索)某個值,然后返回獲得匹配的索引。

要搜索數組,請使用 where() 方法。

實例

查找值為 4 的索引:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
print(x)

運行實例

上例會返回一個元組:(array([3, 5, 6],)

意思就是值 4 出現在索引 3、5 和 6。

實例

查找值為偶數的索引:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
print(x)

運行實例

實例

查找值為奇數的索引:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 1)
print(x)

運行實例

搜索排序

有一個名為 searchsorted() 的方法,該方法在數組中執行二進制搜索,并返回將在其中插入指定值以維持搜索順序的索引。

假定 searchsorted() 方法用于排序數組。

實例

查找應在其中插入值 7 的索引:

import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7)
print(x)

運行實例

例子解釋:應該在索引 1 上插入數字 7,以保持排序順序。

該方法從左側開始搜索,并返回第一個索引,其中數字 7 不再大于下一個值。

從右側搜索

默認情況下,返回最左邊的索引,但是我們可以給定 side='right',以返回最右邊的索引。

實例

從右邊開始查找應該插入值 7 的索引:

import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7, side='right')
print(x)

運行實例

例子解釋:應該在索引 2 上插入數字 7,以保持排序順序。

該方法從右邊開始搜索,并返回第一個索引,其中數字 7 不再小于下一個值。

多個值

要搜索多個值,請使用擁有指定值的數組。

實例

查找應在其中插入值 2、4 和 6 的索引:

import numpy as np
arr = np.array([1, 3, 5, 7])
x = np.searchsorted(arr, [2, 4, 6])
print(x)

運行實例

返回值是一個數組:[1 2 3] 包含三個索引,其中將在原始數組中插入 2、4、6 以維持順序。