找出给定numb上下最近的元素

2024-10-05 13:40:07 发布

您现在位置:Python中文网/ 问答频道 /正文

myArr = array([4,1,88,44,3])
myNumber = 25
FindClosest(myArr, myNumber)
...
4, 44

有没有办法找到列表中与给定数字最接近的两个数字,使其中一个数字高一个低?

我可以通过以下方法找到最接近的号码:

min(myArr.tolist(), key=lambda x:abs(x-myNumber))

Tags: 方法lambdakey列表数字absminarray
3条回答

排序是不必要的,并且使得这个时间复杂度为O(n logn),而它应该只是O(n)。

我相信这正是您所寻找的,利用numpy数组索引:

>>> # the smallest element of myArr greater than myNumber
>>> myArr[myArr > myNumber].min()  
44

>>> # the largest element of myArr less than myNumber
>>> myArr[myArr < myNumber].max()
4
first = min([for i in myArr if a>i])
second = max([for i in myArr if a<i])

另外,正确的答案是44, 4而不是44, 88

upper = min([ i for i in myArr.tolist() if i >= myNumber], key=lambda x:abs(x-myNumber))
lower = min([ i for i in myArr.tolist() if i < myNumber], key=lambda x:abs(x-myNumber))

相关问题 更多 >

    热门问题