numpy.searchsorted#

numpy.searchsorted(a, v, side='left', sorter=None)[源代码]#

查找元素应插入以保持顺序的索引.

找到排序数组 a 中的索引,使得如果 v 中对应的元素插入到这些索引之前,`a` 的顺序将保持不变.

假设 a 已排序:

side

返回的索引 i 满足

left

a[i-1] < v <= a[i]

正确

a[i-1] <= v < a[i]

参数:
a1-D array_like

输入数组.如果 sorter 是 None,那么它必须按升序排序,否则 sorter 必须是一个排序它的索引数组.

varray_like

要插入到 a 中的值.

side{‘left’, ‘right’}, 可选

如果为 ‘left’,则给出找到的第一个合适位置的索引.如果为 ‘right’,则返回最后一个这样的索引.如果没有合适的索引,则返回 0 或 N(其中 N 是 a 的长度).

sorter1-D array_like, 可选

可选的整数索引数组,将数组 a 按升序排序.它们通常是 argsort 的结果.

在 1.7.0 版本加入.

返回:
indices整数或整数数组

v 形状相同的插入点数组,如果 v 是标量,则为整数.

参见

sort

返回一个数组的排序副本.

histogram

从一维数据生成直方图.

备注

二分查找用于找到所需的插入点.

从 NumPy 1.4.0 开始,`searchsorted` 可以处理包含 nan 值的实数/复数数组.增强的排序顺序在 sort 中记录.

此函数使用与内置的 Python bisect.bisect_left (side='left') 和 bisect.bisect_right (side='right') 函数相同的算法,该算法在 v 参数中也是向量化的.

示例

>>> import numpy as np
>>> np.searchsorted([11,12,13,14,15], 13)
2
>>> np.searchsorted([11,12,13,14,15], 13, side='right')
3
>>> np.searchsorted([11,12,13,14,15], [-10, 20, 12, 13])
array([0, 5, 1, 2])