>>> # 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
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))
排序是不必要的,并且使得这个时间复杂度为O(n logn),而它应该只是O(n)。
我相信这正是您所寻找的,利用numpy数组索引:
另外,正确的答案是
44, 4
而不是44, 88
相关问题 更多 >
编程相关推荐