在NumPy数组中搜索
Numpy提供了各种方法来搜索不同种类的数值,在这篇文章中,我们将介绍两个重要的方法。
1. numpy.where:() 它返回输入数组中满足给定条件的元素的索引。
语法: numpy.where(condition[, x, y])
参数:
- condition : 当真时,产生x,否则产生y。
- x, y :x、y和条件需要可以广播到一些形状。
返回值:
out :[ndarray or tuple of ndarrays] 如果同时指定了x和y,输出数组包含条件为True的x的元素,以及其他地方的y的元素。
如果只给出了条件,则返回 condition.nonzero()这个元组,即条件为 True 的索引。
下面的例子演示了如何使用where()进行搜索。
输出:
正如你所看到的,变量i是一个可迭代的,其第一个元素是我们搜索到的值的索引。我们可以通过将最后一条打印语句替换为
这将改变最终输出为
2. numpy.searchsorted():该函数用于查找排序后的数组arr的索引,这样,如果在索引之前插入元素,arr的顺序仍然会被保留。这里,使用二进制搜索来寻找所需的插入索引。
语法 : numpy.searchsorted(arr, num, side=’left’, sorter=None)
参数 :
arr : [array_like] 输入数组。如果sorter是None,那么它必须以升序排序,否则sorter必须是一个可以排序的索引数组。
num : [array_like]我们要插入数组的值。
side : [‘left’, ‘right’], optional.如果是’left’, 将给出找到的第一个合适位置的索引。如果是’右’,则返回最后一个这样的索引。如果没有合适的索引,返回0或N(其中N是a的长度)。
* num : [array_like, Optional] 对数组a进行升序排序的整数索引阵列。它们通常是argsort的结果。
返回 : [indices], 与num形状相同的插入点阵列。
下面的例子解释了searchsorted()的使用。
输出: