![](/img/trans.png)
[英]numpy: in a sorted list, find the first and the last index for each unique value
[英]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
,例如:
vs[0]=1351.10
=> arr[0] == v[0]
=> output 0
vs[1]=1351.13
=> arr[1] < v[1]
和arr[2] > v[1]
=> output 1
vs[2]=1351.17
=> arr[3] < v[2]
=> output 3
所以最后 output [0, 1, 3]
当然我可以 for 循环arr
,然后将arr
与vs
进行比较,但是如果arr
的大小非常大,它可能不是一个好的选择。
我发现np.searchsorted
,这不是我想要的,例如: np.searchsorted(arr, 1351.13)
返回2
,但我想要1
。 还有一个问题,它不能使用vs
也是排序的。
只需将np.searchsorted
与side = 'right'
一起使用,然后减去 1:
np.searchsorted(arr, vs, side = 'right') - 1
array([0, 1, 3], dtype=int64)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.