Python NumPy(十)搜索数组
搜索数组
您可以在数组中搜索某个值,并返回匹配的索引。
要搜索数组,请使用where()方法。
查找值为 4 的索引:
arr = np.array([1, 2, 3, 4, 5, 4, 4])
x = np.where(arr == 4)
上面的示例将返回一个元组:(array([3, 5, 6],)
这意味着值 4 出现在索引 3、5 和 6 处。
例子
查找值是偶数的索引:
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
x = np.where(arr%2 == 0)
搜索排序
有一个方法调用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 将插入原始数组以保持顺序。
转载于:
https://www.w3schools.com/python/numpy/numpy_array_search.asp
浙公网安备 33010602011771号