繁体   English   中英

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

[英]numpy find last less than value index in sorted array?

我有一个完全排序的 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] => output 0
  2. vs[1]=1351.13 => arr[1] < v[1]arr[2] > v[1] => output 1
  3. vs[2]=1351.17 => arr[3] < v[2] => output 3

所以最后 output [0, 1, 3]

当然我可以 for 循环arr ,然后将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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM