【发布时间】:2020-04-20 23:07:17
【问题描述】:
我有一个排序数组。
x = [1, 10, 12, 16, 19, 20, 21, ....]
对于介于[x[0], x[-1]] 之间的任何给定数字y,我想找到最接近大于y 的元素的索引,例如,如果y = 0,则返回0 ,如果y = 18,则返回4
有没有可用的功能?
【问题讨论】:
我有一个排序数组。
x = [1, 10, 12, 16, 19, 20, 21, ....]
对于介于[x[0], x[-1]] 之间的任何给定数字y,我想找到最接近大于y 的元素的索引,例如,如果y = 0,则返回0 ,如果y = 18,则返回4
有没有可用的功能?
【问题讨论】:
【讨论】:
鉴于排序的性质,我们可以使用np.searchsorted -
idx = np.searchsorted(x,y,'right')
【讨论】:
你可以在差的绝对值上使用numpy.argmin:
import numpy as np
x = np.array([1, 10, 12, 16, 19, 20, 21])
def find_closest(x,y):
return (np.abs(x-y)).argmin()
for y in [0,18]:
print(find_closest(x,y))
0
4
【讨论】: