numpy.searchsorted#
- numpy.searchsorted(a, v, side='left', sorter=None)[source]#
查找应插入元素以保持顺序的索引。
查找排序数组 a 中的索引,使得如果将 v 中的对应元素插入索引之前,则 a 的顺序将保持不变。
假设 a 是排序的
side
返回的索引 i 满足
left
a[i-1] < v <= a[i]
right
a[i-1] <= v < a[i]
- 参数:
- a一维数组类
输入数组。如果 sorter 为 None,则它必须按升序排序,否则 sorter 必须是排序它的索引数组。
- v数组类
要插入 a 的值。
- side{‘left’, ‘right’}, 可选
如果为 ‘left’,则给出找到的第一个合适位置的索引。如果为 ‘right’,则返回最后一个此类索引。如果没有合适的索引,则返回 0 或 N(其中 N 是 a 的长度)。
- sorter一维数组类,可选
可选的整数索引数组,用于将数组 a 排序为升序。它们通常是 argsort 的结果。
版本 1.7.0 中的新增功能。
- 返回值:
- indices整数或整数数组
与 v 形状相同的插入点的数组,或者如果 v 是标量,则为整数。
备注
使用二分搜索来查找所需的插入点。
从 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])