numpy找到最后小于值索引在排序数组?



我有一个精确排序的numpy数组,像这样:

arr = np.asarray([1351.1, 1351.11, 1351.14, 1351.16])

,我有一个值数组,也是像这样精确排序的值

vs = np.asarray([1351.10, 1351.13, 1351.17])

我想找到arr中值的最后一个索引小于或等于vs,例如:

  1. vs[0]=1351.10=>arr[0] == v[0]=比;输出0
  2. vs[1]=1351.13=>arr[1] < v[1]&arr[2] > v[1]=>输出1
  3. vs[2]=1351.17=>arr[3] < v[2]=比;输出3

所以最后输出[0, 1, 3]

当然我可以for looparr,然后比较arrvs,但如果arr的大小非常大,它可能不是一个好的选择。

我发现np.searchsorted,它不是我想要的,例如:np.searchsorted(arr, 1351.13)返回2,但我想要1。还有一个问题,它不能利用vs也排序。

使用np.searchsortedside = 'right',然后减去1:

np.searchsorted(arr, vs, side = 'right') - 1
array([0, 1, 3], dtype=int64)

最新更新