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)
自己動手試一試 »
示例說明:數字 7 應插入索引 1 處,以保持排序順序。
該方法從左側開始搜尋,並返回第一個不再大於下一個值的索引。
從右側搜尋
預設情況下,返回最左邊的索引,但我們可以透過指定 side='right'
來返回最右邊的索引。
示例
查詢值 7 應插入的索引,從右側開始
import numpy as np
arr = np.array([6, 7, 8, 9])
x = np.searchsorted(arr, 7, side='right')
print(x)
自己動手試一試 »
示例說明:數字 7 應插入索引 2 處,以保持排序順序。
該方法從右側開始搜尋,並返回第一個不再小於下一個值的索引。
多個值
要搜尋多個值,請使用包含指定值的陣列。
示例
查詢值 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 在原始陣列中插入以保持順序的三個索引。