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 是标量,则为整数.
备注
二分查找用于找到所需的插入点.
从 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])